网上有一些,可是我运行时候经常发生异常,与文章的代码不一致。
如果需要,可以追加100分

解决方案 »

  1.   

    比如 这个
    http://qdisb.blogbus.com/logs/223774.html看上去挺好,可是他的代码不能运行,总是报
    java.lang.IllegalThreadStateException 异常
      

  2.   

    参考这个,http://www.java2000.net/viewthread.jsp?tid=6223
      

  3.   

    这些挂起的函数要小心用,sleep还好点,别的就不好说了,搞不好就会引发线程安全问题。
      

  4.   

    假如只有一个厕所,有几个人都想进去上网,但是不能都同时进去吧。yield()
    本来你已经在用厕所了,但是你心好,你就主动让给比人用。
    sleep()
    别人正在用厕所,你很想用,你就倒数一个时间,比如10秒,到时了,你就冲进去,管他谁在用。
    wait()
    你等厕所时睡着了,就一直没去上厕所,直到有人把你叫醒。(能睡着,应该不是很急)
    notify()
    就是把你叫醒去厕所,不然容易得病。
    这里厕所就是一个资源,比如CPU,你就是一个线程。和你一起等厕所的是其他线程。
      

  5.   

    假如只有一个厕所,有几个人都想用,但是不能都同时进去吧。 yield() 
    本来你已经在用厕所,但是有人比你更急,你就主动让给比人用。 
    sleep() 
    别人正在用厕所,你很想用,你先去休息下,比如10秒,到时了,你再去看是否已经可用(不是冲进去,管他谁在用)。 
    wait() 
    wait有两种,一种是wait()要等notify或者notifyall来唤醒,另一种是wait(int time)有人唤醒了或者时间到了就会停止等待。
    你等厕所时睡着了,就一直没去上厕所,直到有人把你叫醒。(能睡着,应该不是很急) 
    notify() 
    就是把你叫醒去厕所,不然容易得病。 
    这里厕所就是一个资源,比如CPU,你就是一个线程。和你一起等厕所的是其他线程。
    aipb2008 
      

  6.   

    yield() 是将线程战停,但该线程仍然是就绪状态,依然被分配时间片,随时都可运行
    而后2者都进入阻塞状态,没有了时间片,必须满足某种条件才可被分配时间片(进入就绪状太)
    sleep()这个在阻塞状态的时间,阻塞时间过了,才被分配时间片。
    wait() 和notify() 配对,靠notify() 从阻塞中唤醒wait(),并且只能在同步中才能使用
    只要分清楚阻塞状态和就绪状态就好办了