在重写的paint方法里 写上Thread.sleep() 有意义吗

weikeli19 2019-09-03 02:47:04
请问在重写的paint方法里 写上Thread.sleep() 有意义吗?请大佬回答 谢谢 用你们的经验回答吧 高分献上
...全文
230 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qybao 2019-09-05
  • 打赏
  • 举报
回复
又不是主线程sleep,程序怎么会挂起10秒,就好比jvm有个垃圾回收线程,每5分钟执行一遍,难道程序都要挂起5分钟吗?Thread.sleep只是当前线程休眠,不是主线程休眠
qq_39936465 2019-09-04
  • 打赏
  • 举报
回复
引用 5 楼 weikeli19 的回复:
主要关心sleep(5000) 这两个方法都睡眠5000秒 照理说程序运行起来应该挂起10秒 奇怪的是 这个程序 每5秒就运行一次 根本没到10秒 怎么回事?谢谢了
repaint方法应该等于再开一个线程所以sleep没有累加。
weikeli19 2019-09-03
  • 打赏
  • 举报
回复
引用 3 楼 qq_39936465 的回复:
[quote=引用 2 楼 weikeli19 的回复:]
[quote=引用 1 楼 oh_Maxy 的回复:]
Thread.sleep() 是让当前运行的线程暂停一会,但是不会释放相关资源。

有没有意义,看你的需求。比如你画图,想画一下,停一下,让看的人能跟上画的速度,这时候就有意义啦!


根据我的经验 是没意义的 大部分是没意义的 98%是没意义的 不过感谢你的回答 版主[/quote]

只有在多线程,需要等别的线程传递计算数据然后在唤醒sleep进行重绘,这种情况有意义。[/quote]

你好 有一个情况很是怪异 我截图片段 这两个方法都在同一个JPanel面板里
第一个方法是这样的
public void paint(Graphics g) {

try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
paintTankActoin();// 执行坦克动作
CreateBot();// 循环创建电脑坦克
paintImage();// 绘制主图片
g.drawImage(image, 0, 0, this); // 将主图片绘制到面板上

}
第2个方法是这样的
private class FreshThead extends Thread {
public void run() {// 线程主方法

while (!finish) {// 如果游戏未停止 while (!finish)

repaint();// 执行本类重绘方法
try {
Thread.sleep(5000);// 指定时间后重新绘制界面
} catch (InterruptedException e) {
e.printStackTrace();
}

}
}
}
主要关心sleep(5000) 这两个方法都睡眠5000秒 照理说程序运行起来应该挂起10秒 奇怪的是 这个程序 每5秒就运行一次 根本没到10秒 怎么回事?谢谢了
瘦死的黑骆驼 2019-09-03
  • 打赏
  • 举报
回复
引用 3 楼 qq_39936465 的回复:
[quote=引用 2 楼 weikeli19 的回复:] [quote=引用 1 楼 oh_Maxy 的回复:] Thread.sleep() 是让当前运行的线程暂停一会,但是不会释放相关资源。 有没有意义,看你的需求。比如你画图,想画一下,停一下,让看的人能跟上画的速度,这时候就有意义啦!
根据我的经验 是没意义的 大部分是没意义的 98%是没意义的 不过感谢你的回答 版主[/quote] 只有在多线程,需要等别的线程传递计算数据然后在唤醒sleep进行重绘,这种情况有意义。[/quote] 唤醒线程不是唤醒sleep,而是wait(被挂起),不要弄混了哦
qq_39936465 2019-09-03
  • 打赏
  • 举报
回复
引用 2 楼 weikeli19 的回复:
[quote=引用 1 楼 oh_Maxy 的回复:] Thread.sleep() 是让当前运行的线程暂停一会,但是不会释放相关资源。 有没有意义,看你的需求。比如你画图,想画一下,停一下,让看的人能跟上画的速度,这时候就有意义啦!
根据我的经验 是没意义的 大部分是没意义的 98%是没意义的 不过感谢你的回答 版主[/quote] 只有在多线程,需要等别的线程传递计算数据然后在唤醒sleep进行重绘,这种情况有意义。
weikeli19 2019-09-03
  • 打赏
  • 举报
回复
引用 1 楼 oh_Maxy 的回复:
Thread.sleep() 是让当前运行的线程暂停一会,但是不会释放相关资源。

有没有意义,看你的需求。比如你画图,想画一下,停一下,让看的人能跟上画的速度,这时候就有意义啦!


根据我的经验 是没意义的 大部分是没意义的 98%是没意义的 不过感谢你的回答 版主
oh_Maxy 2019-09-03
  • 打赏
  • 举报
回复
Thread.sleep() 是让当前运行的线程暂停一会,但是不会释放相关资源。

有没有意义,看你的需求。比如你画图,想画一下,停一下,让看的人能跟上画的速度,这时候就有意义啦!

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧