zoukankan      html  css  js  c++  java
  • Java线程面试题:子线程先运行 2 次,然后主线程运行 4 次,如此反复运行 3 次

     1 package thread;
     2 
     3 /**
     4  * 需求:线程编程:子线程先运行 2 次,然后主线程运行 4 次,如此反复运行 3 次。
     5  * @author zhongfg
     6  * @date 2015-06-16
     7  */
     8 class Business { // 控制由谁执行
     9     boolean bShouldSub = true;
    10 
    11     public synchronized void MainThread(int i) {
    12         if (bShouldSub) {
    13             try {
    14                 this.wait();
    15             } catch (InterruptedException e) {
    16                 e.printStackTrace();
    17             }
    18         }
    19         for (int j = 0; j < 4; j++) {
    20             System.out.println(Thread.currentThread().getName() + "-->i=" + i
    21                     + ",j=" + j);
    22         }
    23         bShouldSub = true;
    24         this.notify();
    25     }
    26 
    27     public synchronized void SubThread(int i) {
    28         if (!bShouldSub) {
    29             try {
    30                 this.wait();
    31             } catch (InterruptedException e) {
    32                 e.printStackTrace();
    33             }
    34         }
    35         for (int j = 0; j < 2; j++) {
    36             System.out.println(Thread.currentThread().getName() + "->i=" + i
    37                     + ",j=" + j);
    38         }
    39         bShouldSub = false;
    40         this.notify();
    41     }
    42 }
    43 
    44 public class ThreadInterview {
    45     public static void main(String args[]) {
    46 
    47         ThreadInterview tp = new ThreadInterview();
    48         tp.init();
    49     }
    50 
    51     public void init() {
    52 
    53         final Business business = new Business();
    54         new Thread(new Runnable() {
    55 
    56             public void run() {
    57                 for (int i = 0; i < 3; i++) {
    58                     // 调用子线程中的方法
    59                     business.SubThread(i);
    60                 }
    61             }
    62         }).start();
    63 
    64         for (int i = 0; i < 3; i++) {
    65             business.MainThread(i);
    66         }
    67     }
    68 }
    69 
    70 运行结果:
    71 Thread-0->i=0,j=0
    72 Thread-0->i=0,j=1
    73 main-->i=0,j=0
    74 main-->i=0,j=1
    75 main-->i=0,j=2
    76 main-->i=0,j=3
    77 Thread-0->i=1,j=0
    78 Thread-0->i=1,j=1
    79 main-->i=1,j=0
    80 main-->i=1,j=1
    81 main-->i=1,j=2
    82 main-->i=1,j=3
    83 Thread-0->i=2,j=0
    84 Thread-0->i=2,j=1
    85 main-->i=2,j=0
    86 main-->i=2,j=1
    87 main-->i=2,j=2
    88 main-->i=2,j=3
  • 相关阅读:
    第二章.md
    第四章.md
    第一章.md
    第九章.md
    png简析.md
    第五章.md
    好看的粒子效果
    缓动 减速运动
    收集的小效果
    粒子效果2
  • 原文地址:https://www.cnblogs.com/zfg-technology/p/3572416.html
Copyright © 2011-2022 走看看