黑马程序员技术交流社区

标题: 线程同步问题 [打印本页]

作者: 冯鹏飞    时间: 2011-7-28 13:18
标题: 线程同步问题
在线程同步中为使线程中断有两种方式:wait()和sleep(),不太明白其区别和各具体使用情况?希望能有详细解答先谢谢了.
作者: 匿名    时间: 2011-7-28 14:49
标题: 回复 楼主 的帖子
个人理解(对线程不是很理解,怎么应用)
.wait()表示在对象上等待;如果该对象从无他人占用,则标为占用;如该对象已经占用,则排在该对象的等待队列中。需要唤醒.notify()唤醒该对象等待队列中的第一个;.notifyAll()唤醒该对象等待队列中的所有线程。
.sleep()就是让线程等待多长时间然后继续。。。
一个例子:[code]class MyA extends Thread
{
        public void run()
        {
                for(int i=0; i<20; i++)
                {
                        System.out.println("MyA...run..." + i);
                        try{ Thread.sleep(1000); }catch(Exception e){ }
                        if(MyTest.tag)
                        {
                                System.out.println("清理帐务......");
                                break;
                        }
                }
        }
}
class MyB implements Runnable
{
        public void run()
        {
                for(int i=0; i<20; i++)
                {
                        System.out.println("MyB.run.." + i);
                        try{ Thread.sleep(1000); }catch(Exception e){ }
                }
               
        }
}
public class MyTest
{
        public static boolean tag;
       
        public static void main(String[] args) throws Exception
        {
                new MyA().start();
                new Thread(new MyB()).start();
                System.in.read();
                tag = true;
                for(int i=0; i<30; i++)
                {
                        System.out.println("main..... " + i);
                 }
         }
}[/code]




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2