public class Test
{
// 测试
public static void main(String[] args) throws Exception
{
Object obj = new Object();
// 启动两个线程
Thread1 t1 = new Thread1(obj);
Thread2 t2 = new Thread2(obj);
t1.start();
t2.start();
}
}
// 一个线程打印1-52
class Thread1 extends Thread
{
private Object obj;
public Thread1(Object obj)
{
this.obj = obj;
}
public void run()
{
synchronized (obj)
{
// 打印1-52
for (int i = 1; i < 53; i++)
{
System.out.print(i + " ");
if (i % 2 == 0)
{
// 不能忘了 唤醒其它线程
obj.notifyAll();
try
{
obj.wait();
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
}
}
}
// 另一个线程打印字母A-Z
class Thread2 extends Thread
{
private Object obj;
public Thread2(Object obj)
{
this.obj = obj;
}
public void run()
{
synchronized (obj)
{
// 打印A-Z
for (int i = 0; i < 26; i++)
{
System.out.print((char) ('A' + i) + " ");
// 不能忘了 唤醒其它线程
obj.notifyAll();
try
{
// 最后一个就不要等了
if (i != 25)
{
obj.wait();
}
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
}
}
线程交替有序执行任务
最新推荐文章于 2024-05-03 23:35:41 发布