阿里面试问题,如何控制三个线程,让他们顺序输出100个数字?
参照:三个线程顺序循环执行的三种方式,自己动手码一下。
方法一:使用同步代码块
/*使用synchronized实现*/
public class TestPrint {
static int count=0;//全局变量count
static final Object object=new Object();//定义一个同步监视器object
//实现Runnable()接口,定义三个线程t1,t2,t3
Thread t1=new Thread(new Runnable() {
@Override
public void run() {
synchronized (object)//锁住
{
//一直执行,直到count>100
while (true) {
try {
if (count > 100)
System.exit(0);
if (count % 3 == 0) {
System.out.println(t1.getName() + "输出:" + count);
count++;
object.notifyAll();//一定要加object
} else {
object.wait();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
});
Thread t2=new Thread(new Runnable() {
@Override
public void run() {
synchronized (object)//锁住
{
//一直执行,直到count>100
while (true) {
try {
if(count>100)
System.exit(0);
if (count % 3 == 1) {
System.out.println(t2.getName() + "输出:" + count);
count++;
object.notifyAll();//一定要加object
} else {
object.wait();
}
}catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
}
});
Thread t3=new Thread(new Runnable() {
@Override
public void run()