<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      【Java知識】java線程控制,控制線程的執行順序,有多個方法,計數器信號量你用過嗎?

      保證線程的順序

      第一種:使用join

       for (int i = 0; i < 10; i++){
           Thread t1 = new Thread(new Runnable() {
               public void run() {
                   System.out.println("我是t1線程");
               }
           });
       ?
           Thread t2 = new Thread(new Runnable() {
               public void run() {
                   System.out.println("我是t2線程\n");
               }
           });
           t1.start();
           t1.join();
           t2.start();
           
           Thread.sleep(500);
       }

      第二種:使用單線程池

      ExecutorService executor = Executors.newSingleThreadExecutor();
       for (int i = 0; i < 10; i++){
           Thread t1 = new Thread(new Runnable() {
               public void run() {
                   System.out.println("我是t1線程");
               }
           });
       ?
           Thread t2 = new Thread(new Runnable() {
               public void run() {
                   System.out.println("我是t2線程\n");
               }
           });
           executor.submit(t1);
           executor.submit(t2);
           
           Thread.sleep(500);
       }
       executor.shutdown();

      第三種:使用CountDownLatch計數器

      for (int i = 0; i < 10; i++){
           final CountDownLatch count = new CountDownLatch(1);
           Thread t1 = new Thread(new Runnable() {
               public void run() {
                   System.out.println("我是t1線程");
                   count.countDown();
               }
           });
       ?
           Thread t2 = new Thread(new Runnable() {
               public void run() {
                   try {
                       count.await();
                   } catch (InterruptedException e) {
                       e.printStackTrace();
                   }
                   System.out.println("我是t2線程\n");
               }
           });
       ?
           t2.start();
           t1.start();
       ?
           Thread.sleep(500); 
       }

      第四種:使用wait和notify控制

      第五種:使用CyclicBarrier循環屏障

      第六種:使用Semaphore信號量

      第七種:使用消息隊列等中間件,如zookeeper、kafka等

      你問我為什么后面幾種高大上的為什么沒有例子,因為它們例子寫起來代碼有點多,如果沒有使用過的同學一定要百度了解下,特別是CyclicBarrierSemaphore,這兩個是java后面新增的并發包中的類,好用不貴。不然都不好意思說自己精通java

      總結

      以上多種控制線程順序的方法,可以根據不同的場景使用不同的方法。每種方法都有他們的使用場景,在不同的場景選擇最合適的方法才能事半功倍。

      posted @ 2021-10-22 10:05  Java夜未眠  閱讀(31)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国模一区二区三区私拍视频| 国产精品久久久久久久久久直播| 不卡在线一区二区三区视频| 免费人妻无码不卡中文字幕系| 精品人妻无码一区二区三区性| 91中文字幕一区二区| 黑人好猛厉害爽受不了好大撑| 午夜精品福利一区二区三| 亚洲午夜久久久影院伊人| 国产精品国产三级国av| 插入中文字幕在线一区二区三区| 国产精品一区中文字幕| 久久精品国产福利一区二区| 青草视频在线观看视频| 一本色道久久加勒比综合| 国产精品推荐视频一区二区 | 中文字幕av国产精品| 久久久久久久久久久久中文字幕| 精品人妻二区中文字幕| 日韩亚洲精品中文字幕| 毛片亚洲AV无码精品国产午夜| 国产黄色带三级在线观看| 青青草原国产精品啪啪视频 | 狠狠婷婷综合久久久久久| 精品三级在线| 精品一区二区不卡无码AV| 亚洲欧美日韩综合久久| 涩涩爱狼人亚洲一区在线| 给我免费观看片在线| 婷婷四房综合激情五月在线| 尤物tv国产精品看片在线| 中文有无人妻vs无码人妻激烈| 在线 | 国产精品99传媒a| 日韩精品国产二区三区| 日本国产精品第一页久久| 国产成人精品一区二区三| 国产一级片内射在线视频| 托里县| 熟女视频一区二区三区嫩草| 动漫AV纯肉无码AV电影网| 日本精品一区二区不卡|