码迷,mamicode.com
首页 > 编程语言 > 详细

线程:子线程先循环十次,主线程在循环20次,再子线程循环十次,主线程循环20次,如此循环50次

时间:2019-06-14 23:56:49      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:strong   oid   tst   trace   dex   int   span   div   str   


子线程先循环十次,主线程在循环20次,再子线程循环十次,主线程循环20次,如此循环50次

1
/** 2 * 子线程先循环十次,主线程在循环20次,再子线程循环十次,主线程循环20次,如此循环50次 3 * @author llj 4 * 5 */ 6 public class ThreadTest { 7 8 public static void main(String[] args) { 9 Syn syn = new Syn(); 10 new Thread(new Runnable() { 11 @Override 12 public void run() { 13 for(int i=0; i<50; i++) { 14 syn.child(); 15 } 16 } 17 }).start(); 18 for(int i=0; i<50; i++) { 19 syn.main(); 20 } 21 } 22 } 23 24 class Syn{ 25 private boolean temp = true; 26 public synchronized void main() { 27 if(temp) { 28 try { 29 this.wait();//导致当前线程等待,直到另一个线程调用该对象的 notify()方法或 notifyAll()方法 30 } catch (InterruptedException e) { 31 e.printStackTrace(); 32 } 33 } 34 for(int i=0; i<20; i++) { 35 System.out.println("主线程"+i); 36 } 37 temp = true; 38 this.notify();//唤醒正在等待对象监视器的单个线程。 39 } 40 public synchronized void child() { 41 if(!temp) { 42 try { 43 this.wait(); 44 } catch (InterruptedException e) { 45 e.printStackTrace(); 46 } 47 } 48 for(int j=0; j<10; j++) { 49 System.out.println("子线程"+j); 50 } 51 temp = false; 52 this.notify(); 53 } 54 }

 

线程:子线程先循环十次,主线程在循环20次,再子线程循环十次,主线程循环20次,如此循环50次

标签:strong   oid   tst   trace   dex   int   span   div   str   

原文地址:https://www.cnblogs.com/lenglangjin/p/11025665.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!