码迷,mamicode.com
首页 > 编程语言 > 详细

java中使用wait就得使用同步锁,而且2个线程必须都使用同步代码块,否则就会异常

时间:2015-08-27 09:31:10      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:

标题已经说明,子线程wai()时候默认的锁不是同步代码块的锁,因此wai时候显示的指明锁,现在解释看code:

public class Test {
//	static	boolean flag=true;
	public static void main(String[] args) throws InterruptedException {
	
		Zp z=new Zp();
		Thread st=new Thread(z);
		st.start();
		for(int x=0;x<100000;x++)
		{
			if(x%5000==0)
			{
//				flag=false;
				Thread.sleep(3000);
				synchronized (Test.class) //这里必须判断同步,否则当子线程没有放弃锁的时候,就执行下面会出现异常
				{
					Test.class.notify();
				}
				
			}
		}
		
	}
static class Zp implements Runnable
{
	@Override
	public void run() {
	
		synchronized (Test.class) {
			while(true)
			{
			for(int x=0;x<10;x++)
			{
			System.out.println("haha...");
			}
			
					try {
						Test.class.wait();
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
			}
		}
	}
	
}

}

  

java中使用wait就得使用同步锁,而且2个线程必须都使用同步代码块,否则就会异常

标签:

原文地址:http://www.cnblogs.com/bokeofzp/p/4762248.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!