package com.entel.research;
public class TraditionalThreadCommunication
{
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);
}
}
}
class Business
{
private boolean bShouldSub = true;
public synchronized void sub(int i)
{
while (!bShouldSub)//用while不用if,防止伪唤醒
{
try
{
this.wait();
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
for (int j = 1; j <= 10; j++)
{
System.out.println("sub thread sequece of" + j + ",loop of" + i);
}
bShouldSub = false;
this.notify();
}
public synchronized void main(int i)
{
while (bShouldSub)//用while不用if,防止伪唤醒
{
try
{
this.wait();
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
for (int j = 1; j <= 100; j++)
{
System.out.println("main thread sequece of" + j + ",loop of" + i);
}
bShouldSub = true;
this.notify();
}
}
线程同步
最新推荐文章于 2023-06-09 10:42:18 发布