您的位置:首页 > 编程语言 > Java开发

java多线程 典型案例:子线程执行10次,主线程执行100次,两者交替50次

2016-04-09 17:10 423 查看
public class Test {

public static void main(String[] args) {

final Business business = new Business();

new Thread(new Runnable() {

public void run() {

for (int i = 1; i <= 50; i++) {

business.sub(i);

}

}

}).start();

for (int i = 1; i <= 50; i++) {

business.main(i);

}

}

}

class Business {

private boolean bShouldSub = true;

public synchronized void sub(int i) {

// 如果bussiness调用sub的话,则【!bShouldSub =false,bShouldSub=true】;

// 然后主线程main为等待,执行完sub后就bShouldSub=false;唤醒主线程main。

while (!bShouldSub) {

try {

this.wait();

} catch (InterruptedException e) {

e.printStackTrace();

}

}

for (int j = 1; j <= 10; j++) {

System.out.println("sub thread sequence of " + j + ",loop of " + i);

}

bShouldSub = false;

// 唤醒main

this.notify();

}

public synchronized void main(int i) {

while (bShouldSub) {

try {

this.wait();

} catch (InterruptedException e) {

e.printStackTrace();

}

}

for (int j = 1; j <= 100; j++) {

System.out

.println("main thread sequence of " + j + ",loop of " + i);

}

bShouldSub = true;

// 唤醒sub

this.notify();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: