import java.util.*;
public class Main {
static ArrayList<Integer> list=new ArrayList<Integer>();
private static Object lock=new Object();
private static int a=1;
private static int b=1;
static boolean bool=true;
public static void main(String[] args)
{
Thread t1=new Thread(){
public void run()
{
for(int i=0;i<10;i++)
{
synchronized(lock)
{
a*=3;
list.add(a);
bool=false;
lock.notify();//唤醒一个线程
try
{
lock.wait();//挂起该线程
}
catch(InterruptedException e)
{
e.printStackTrace();
}
}
}
}
};
Thread t2=new Thread(){
public void run()
{
for(int i=0;i<10;i++)
{
synchronized(lock){
if(bool)
{
try{
lock.wait();
}
catch(InterruptedException e)
{
e.printStackTrace();
}
}
b*=7;
list.add(b);
bool=true;
lock.notifyAll();//唤醒所有等待线程(同一个锁上)
}
}
}
};
t1.start();
t2.start();
try
{
t1.join();
t1.join();
}
catch(InterruptedException e)
{
e.printStackTrace();
}
for(int i=0;i<list.size();i++)
{
System.out.println(list.get(i));
}
}
}