java线程的问题

gqq1014 2010-04-20 08:49:53
当启动一个java的Thread线程以后,需要主动在Thread的run方法里面调用sleep
让当前线程暂停,让出cpu的控制权。为什么要这样呢?java的线程不是按时间片调度的么?
...全文
102 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
gqq1014 2010-04-22
  • 打赏
  • 举报
回复
谢谢各位
gqq1014 2010-04-21
  • 打赏
  • 举报
回复
可以同时开几个死循环的线程。

用sleep并没有让出cpu的控制权,只是为了实现某种效果。

wait才是让出控制权
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~那就是说如果不是特地想让线程停止下来,可以不用sleep,其他的线程不受影响,仍然能被执行到?
梦_枫 2010-04-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 gqq1014 的回复:]
可以同时开几个死循环的线程。

用sleep并没有让出cpu的控制权,只是为了实现某种效果。

wait才是让出控制权
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~那就是说如果不是特地想让线程停止下来,可以不用sleep,其他的线程不受影响,仍然能被执行到?
[/Quote]

是的。。。。只要系统CUP不是很小
fengshiyan1943 2010-04-21
  • 打赏
  • 举报
回复
梦_枫 2010-04-21
  • 打赏
  • 举报
回复
sleep与wait的不同点是:sleep并不释放锁,并且sleep的暂停和wait暂停是不一样的。obj.wait会使线程进入obj对象的等待集合中并等待唤醒。
梦_枫 2010-04-21
  • 打赏
  • 举报
回复
一个线程中是死循环,还是可以开另外的线程,
只要CPU没用完。

可以同时开几个死循环的线程。

用sleep并没有让出cpu的控制权,只是为了实现某种效果。

wait才是让出控制权
weberwong 2010-04-20
  • 打赏
  • 举报
回复
那只是理论,始终不释放cpu一样会把大家都拖死,运行一个死循环的程序整个系统也会变慢的
gqq1014 2010-04-20
  • 打赏
  • 举报
回复
run里就是一个死循环,线程不是按时间片轮转吗?如果按时间片轮转的话每个线程得到cpu的执行时间是一样的啊,这样每个线程都死循环都可以。
weberwong 2010-04-20
  • 打赏
  • 举报
回复
不需要,主线程和新开的线程可以同时运行,不过如果你线程里是死循环那就没办法了,会把cpu全占尽,这种时候才需要sleep

13,100

社区成员

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

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