黑马程序员技术交流社区
标题:
线程同步问题
[打印本页]
作者:
冯鹏飞
时间:
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