public class ThreadTest {
public static void main(String[] args) throws Exception {
final Bussiness business = new Bussiness();
Thread thread1 = new Thread() {
@Override
public void run() {
business.SubThread();
}
};
Thread thread2 = new Thread() {
@Override
public void run() {
business.MainThread();
}
};
thread1.start();
thread2.start();
}
}
class Bussiness {
private static Object LOCK = new Object();
static int num = 1;
static int index = 0;
static String str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
public void MainThread() {
synchronized (LOCK) {//notify和wait的对象一定要和synchronized的对象保持一致
while(index < str.length()) {
if (num%3==0) {
System.out.println(str.charAt(index));
index++ ;
num++ ;
if(num%3==1 || num%3==2) {
try {
LOCK.notify();
LOCK.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
}
public void SubThread() {
synchronized (LOCK){
while(num <= 52) {
if (num%3==1 || num%3==2) {
System.out.println(num);
num++ ;
if(num%3==0) {
LOCK.notify();
try {
LOCK.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
}
}
java线程间通信
最新推荐文章于 2023-04-24 22:32:01 发布