timer.schedule可以控制g.drawOval的延时吗?

写了一个小程序,希望能每隔3秒绘制一个圆形,并显示一对坐标值。

可是运行起来,发现每隔3秒只会显示坐标值,并不会绘制圆形。换句话说,只会执行第13-16行代码,单单不执行第12行g.drawOval(x,y,20,20)。
请问这是什么原因呢?

10 timer.schedule(new TimerTask(){
11 public void run(){
12 g.drawOval(x,y,20,20);
13 System.out.println(x+" , "+y);
14 if(x>=100)
15 timer.cancel();
16 }
17 },5000,3000);

https://zhidao.baidu.com/question/1607508780674183827.html