java线程通信_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > java线程通信

java线程通信

 2011/10/11 8:12:18  夜不懂白的黑  http://ibmas400.iteye.com  我要评论(0)
  • 摘要:题目:子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次。publicclassTraditionalThreadCommunicationTest{publicstaticvoidmain(String[]args){finalBusinessbusiness=newBusiness();newThread(newRunnable(){@Overridepublicvoidrun(){for(inti=1;i<=50;i++
  • 标签:Java 线程

题目:线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次。



public class TraditionalThreadCommunicationTest
{
	public static void main(String[] args)
	{
		final Business business = new Business();
		
		new Thread(
				new Runnable()
				{					
					@Override
					public void run()
					{
						for(int i=1; i<=50; i++)
						{
							business.sub(i);
						}
					}
				}).start();
		
		for(int i=1; i<=50; i++)
		{
			business.main(i);
		}
	}
	
	static class Business
	{
		private boolean bShouldSub = true;
		public synchronized void sub(int i)
		{
			while(!bShouldSub)
			{
				try
				{
					this.wait();
				}
				catch (InterruptedException e)
				{
					e.printStackTrace();
				}
			}
			for(int j=1; j<=10; j++)
				System.out.println("sub thread sequence of " + j + ", loop of" + i);
			bShouldSub = false;
			this.notify();
		}
		public synchronized void main(int i)
		{
			while(bShouldSub)
			{
				try
				{
					this.wait();
				}
				catch (InterruptedException e)
				{
					e.printStackTrace();
				}
			}
			for(int j=1; j<=100; j++)
				System.out.println("main thread sequence of " + j + ", loop of" + i);
			bShouldSub = true;
			this.notify();
		}
	}
}
有关线程同步或通信问题:要用到共同数据(同步锁)或共同算法的若干个方法时,应该归结在同一个类上,
                                   在方法上做同步,这种设计体现了高类聚和程序的健壮性!
(来源于传智播客张孝祥老师多线程视频学习)
发表评论
用户名: 匿名