线程1能打印出:0,2,4,6,8,,线程2能打印出1,3,5,7,9
需求:打印出1,2,3,4,5,6,7,8,9
程序入口
//参看消费和生产 https://blog.youkuaiyun.com/XiaopinOo/article/details/76630973
public class TestThread {
public static void main(String[] args) {
Print p = new Print();
B b = new B(p);
A a= new A(p);
a.start();
b.start();
}
}
线程A
class A extends Thread{
Print p;
public A(Print p){
this.p= p;
}
public void run() {
p.odd();
}
}
线程B
class B extends Thread{
Print p;
public B(Print p){
this.p= p;
}
public void run() {
p.even();
}
}
打印
class Print{
int[] a={0,2,4,6,8};
int[] b={1,3,5,7,9};
boolean oFlag =true; //奇数线程 挂起标识
boolean eFlag =false; //偶数线程 挂起标识
/**
* 打印偶数
* synchronized:在同一时间只会被同一线程访问
*/
public synchronized void even()
{
for(int i = 0; i < a.length; i++){
if(eFlag){
try {
/**
* 使持有该对象的线程把该对象