/**
* @author 杨宁
*双线程对数字交替打印:
*原理:M线程执行偶数递增,N线程执行奇数递增,二者共同占有同一个对象锁
*当M线程执行占有线程锁打印输出然后等待让出锁,
*此时N线程得到锁进行打印输出并通知线程M结束等待,然后自己进入等待状态让出锁。
*然后M线程再次占有锁打印输出,进入等待让出锁并通知N结束等待,依次交替执行
*/
public class Jiaotidaying {
public static void main(String[] args) {
Object obj = new Object();
Thread t1=new Thread(new M(obj));
Thread t2=new Thread(new N(obj));
t1.start();
t2.start();
}
}
class M implements Runnable{
Object o;
public M(Object o) {
super();
this.o = o;
}
@Override
public void run() {
synchronized (o) {
int i=0;
while (true) {
int num=2*i;
System.out.println("M------>"+num);
i++;
try {
//进行等待让出锁
o.wait();
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//唤醒结束等待
o.notify();
}
}
}
}
class N implements Runnable{
Object o;
public N(Object o) {
super();
this.o = o;
}
@Override
public void run() {
synchronized (o) {
int i=0;
while (true) {
int num=2*i+1;
System.out.println("N------>"+num);
i++;
o.notify();
try {
o.wait();
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
java 多线程 实现交替打印输出
最新推荐文章于 2024-04-22 14:31:28 发布