处理多线程同步问题
程序员文章站
2022-05-02 12:06:24
...
public class BusinessFor {
private boolean bShouldSub = true;
public synchronized void sub(int j) {
//如果我不能执行,我将被设置为等待
while (!bShouldSub) {
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
for (int i = 1; i <= 10; i++) {
System.out.println("sub: " + i + ",loop: " + j);
}
bShouldSub = false;
this.notify();//唤醒
}
public synchronized void zhu(int j) {
while (bShouldSub) {
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
for (int i = 1; i <= 100; i++) {
System.out.println("main: " + i + ",loop: " + j);
}
bShouldSub = true;
this.notify();//唤醒
}
}
这是一种多线程设计的一种思想,将线程同步的信息放在可syn同步的类中 。
以下是启动线程测试
public class ThreadTongBu {
public static void main(String[] args) {
final BusinessFor businessFor = new BusinessFor();
new Thread(new Runnable() {
public void run() {
for(int i=1;i<=50;i++){
businessFor.sub(i);
}
}
}).start();
for(int i=1;i<=50;i++){
businessFor.zhu(i);
}
}
}
上一篇: iOS多线程同步问题