• java多线程笔试题:设计4个线程,其中两个线程每次对j增加1,另外2个线程每次对j减少1.写出程序


    分析:线程之间要共享变量(j)

    代码:

     1 /**
     2  * 
     3  */
     4 package bsms.base;
     5 
     6 /**
     7  * @author sunny
     8  *
     9  */
    10 public class Base55 {
    11   private int j;
    12 
    13   /**
    14    * @param args
    15    */
    16   public static void main(String[] args) {
    17     Base55 t = new Base55();
    18     for (int i = 0; i < 2; i++) {
    19       Runnable at = t.new Add();
    20       Runnable st = t.new Sub();
    21       new Thread(at, "Add-" + i).start();
    22       new Thread(st, "Sub-" + i).start();
    23     }
    24   }
    25 
    26   private synchronized void add() {
    27     System.out.println(Thread.currentThread().getName() + ",j=" + ++j);
    28     try {
    29       Thread.sleep(100);
    30     } catch (InterruptedException e) {
    31       // TODO Auto-generated catch block
    32       e.printStackTrace();
    33     }
    34   }
    35 
    36   private synchronized void sub() {
    37     System.out.println(Thread.currentThread().getName() + ",j=" + --j);
    38     try {
    39       Thread.sleep(100);
    40     } catch (InterruptedException e) {
    41       // TODO Auto-generated catch block
    42       e.printStackTrace();
    43     }
    44   }
    45 
    46   private class Add implements Runnable {
    47     @Override
    48     public void run() {      
    49 //      for (int i = 0; i < 100; i++) {
    50 //        add();
    51 //      }
    52       while(true){
    53         add();       
    54       }
    55     }
    56   }
    57 
    58   private class Sub implements Runnable {
    59     @Override
    60     public void run() {
    61 //      for (int i = 0; i < 100; i++) {
    62 //        sub();
    63 //      }
    64       while(true){
    65         sub();
    66       }
    67     }
    68   }
    69 
    70 }

    效果:

      1 Add-0,j=1
      2 Sub-1,j=0
      3 Sub-1,j=-1
      4 Sub-1,j=-2
      5 Sub-1,j=-3
      6 Add-1,j=-2
      7 Add-1,j=-1
      8 Add-1,j=0
      9 Sub-0,j=-1
     10 Add-1,j=0
     11 Add-1,j=1
     12 Sub-1,j=0
     13 Sub-1,j=-1
     14 Sub-1,j=-2
     15 Sub-1,j=-3
     16 Sub-1,j=-4
     17 Sub-1,j=-5
     18 Sub-1,j=-6
     19 Add-0,j=-5
     20 Sub-1,j=-6
     21 Sub-1,j=-7
     22 Sub-1,j=-8
     23 Sub-1,j=-9
     24 Sub-1,j=-10
     25 Sub-1,j=-11
     26 Add-1,j=-10
     27 Add-1,j=-9
     28 Add-1,j=-8
     29 Add-1,j=-7
     30 Sub-0,j=-8
     31 Add-1,j=-7
     32 Add-1,j=-6
     33 Add-1,j=-5
     34 Add-1,j=-4
     35 Add-1,j=-3
     36 Add-1,j=-2
     37 Add-1,j=-1
     38 Add-1,j=0
     39 Add-1,j=1
     40 Add-1,j=2
     41 Add-1,j=3
     42 Add-1,j=4
     43 Add-1,j=5
     44 Add-1,j=6
     45 Add-1,j=7
     46 Add-1,j=8
     47 Add-1,j=9
     48 Add-1,j=10
     49 Add-1,j=11
     50 Add-1,j=12
     51 Add-1,j=13
     52 Add-1,j=14
     53 Add-1,j=15
     54 Add-1,j=16
     55 Add-1,j=17
     56 Add-1,j=18
     57 Add-1,j=19
     58 Sub-1,j=18
     59 Sub-1,j=17
     60 Sub-1,j=16
     61 Sub-1,j=15
     62 Sub-1,j=14
     63 Sub-1,j=13
     64 Sub-1,j=12
     65 Sub-1,j=11
     66 Sub-1,j=10
     67 Sub-1,j=9
     68 Add-0,j=10
     69 Add-0,j=11
     70 Add-0,j=12
     71 Add-0,j=13
     72 Add-0,j=14
     73 Add-0,j=15
     74 Add-0,j=16
     75 Add-0,j=17
     76 Sub-1,j=16
     77 Sub-1,j=15
     78 Sub-1,j=14
     79 Sub-1,j=13
     80 Sub-1,j=12
     81 Sub-1,j=11
     82 Sub-1,j=10
     83 Add-1,j=11
     84 Add-1,j=12
     85 Sub-0,j=11
     86 Add-1,j=12
     87 Add-1,j=13
     88 Add-1,j=14
     89 Add-1,j=15
     90 Sub-1,j=14
     91 Sub-1,j=13
     92 Sub-1,j=12
     93 Sub-1,j=11
     94 Add-0,j=12
     95 Add-0,j=13
     96 Add-0,j=14
     97 Add-0,j=15
     98 Sub-1,j=14
     99 Add-1,j=15
    100 Sub-0,j=14
    101 Sub-0,j=13
    102 Sub-0,j=12
    103 Sub-0,j=11
    104 Sub-0,j=10
    105 Add-1,j=11
    106 Add-1,j=12
    107 Sub-1,j=11
    108 Add-0,j=12
    109 Add-0,j=13
    110 Add-0,j=14
    111 Add-0,j=15
    112 Sub-1,j=14
    113 Sub-1,j=13
    114 Add-1,j=14
    115 Add-1,j=15
    116 Sub-0,j=14
    117 Add-1,j=15
    118 Add-1,j=16
    119 Add-1,j=17
    120 Add-1,j=18
    121 Add-1,j=19
    122 Add-1,j=20
    123 Add-1,j=21
    124 Sub-1,j=20
    125 Sub-1,j=19
    126 Sub-1,j=18
    127 Sub-1,j=17
    128 Sub-1,j=16
    129 Sub-1,j=15
    130 Sub-1,j=14
    131 Sub-1,j=13
    132 Sub-1,j=12
    133 Sub-1,j=11
    134 Sub-1,j=10
    135 Add-0,j=11
    136 Add-0,j=12
    137 Add-0,j=13
    138 Add-0,j=14
    139 Add-0,j=15
    140 Add-0,j=16
    141 Add-0,j=17
    142 Add-0,j=18
    143 Sub-1,j=17
    144 Sub-1,j=16
    145 Sub-1,j=15
    146 Sub-1,j=14
    147 Sub-1,j=13
    148 Sub-1,j=12
    149 Sub-1,j=11
    150 Sub-1,j=10
    151 Sub-1,j=9
    152 Sub-1,j=8
    153 Sub-1,j=7
    154 Sub-1,j=6
    155 Add-1,j=7
    156 Add-1,j=8
    157 Add-1,j=9
    158 Sub-0,j=8
    159 Add-1,j=9
    160 Add-1,j=10
    161 Add-1,j=11
    162 Add-1,j=12
    163 Add-1,j=13
    164 Add-1,j=14
    165 Sub-1,j=13
    166 Sub-1,j=12
    167 Sub-1,j=11
    168 Sub-1,j=10
    169 Sub-1,j=9
    170 Sub-1,j=8
    171 Sub-1,j=7
    172 Sub-1,j=6
    173 Sub-1,j=5
    174 Sub-1,j=4
    175 Add-0,j=5
    176 Add-0,j=6
    177 Add-0,j=7
    178 Add-0,j=8
    179 Add-0,j=9
    180 Add-0,j=10
    181 Add-0,j=11
    182 Sub-1,j=10
    183 Sub-1,j=9
    184 Sub-1,j=8
    185 Sub-1,j=7
    186 Sub-1,j=6
    187 Sub-1,j=5
    188 Sub-1,j=4
    189 Sub-1,j=3
    190 Sub-1,j=2
    191 Sub-1,j=1
    192 Add-1,j=2
    193 Add-1,j=3
    194 Sub-0,j=2
    .......只展示部分
  • 相关阅读:
    编程里的数字游戏
    SqlServer2005Express下的事件探查器
    来玩玩这个
    把一个bitmap在内存中的数据块 搬到另一个bitmap中
    一些常用的sql
    C#图像处理
    来玩玩画直线
    关于未来的思考
    年末个人小结
    [转载]编写超级可读代码的15个最佳实践
  • 原文地址:https://www.cnblogs.com/sunny08/p/6929558.html
Copyright © 2020-2023  润新知