A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯鹏飞 黑马帝   /  2011-7-28 13:18  /  1344 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在线程同步中为使线程中断有两种方式:wait()和sleep(),不太明白其区别和各具体使用情况?希望能有详细解答先谢谢了.

1 个回复

倒序浏览
黑马网友  发表于 2011-7-28 14:49:56
沙发

回复 楼主 的帖子

个人理解(对线程不是很理解,怎么应用)
.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]
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马