package thread;
public class MyThreadTest {
private static final int _REPET_TIME = 1000; //限定次数,方便面测试结果
private volatile int times = 0;//有synchronized,不需要volatile
private synchronized void print(String s) {
try {
if (s.equals("B")) {
this.notify();
System.out.print("B");
this.wait();
} else if (s.equals("E")) {
this.notify();
System.out.print("E");
this.wait();
}
times ++ ;
// if(times > 300) {
// System.out.print(Thread.currentThread().getName());
// }
} catch (Exception e) {
}
}
public static void main(String[] args) {
final MyThreadTest t = new MyThreadTest();
Thread tb = new Thread(new Runnable() {
public void run() {
while(t.times < _REPET_TIME ) {
t.print("B");
}
}
});
Thread te = new Thread( new Runnable() {
public void run() {
while(t.times < _REPET_TIME) {
t.print("E");
}
}
});
tb.start();
te.start();
}
}
主线程启动两个线程,并输出BEBEBE……BE...BE的字符串。要求,两个子线程分别连续输出B和E。
最新推荐文章于 2022-06-29 20:28:31 发布