java多線程題目的解決方案

本篇文章為大家展示了java多線程題目的解決方案,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

石家莊ssl適用于網站、小程序/APP、API接口等需要進行數據傳輸應用場景,ssl證書未來市場廣闊!成為成都創新互聯的ssl證書銷售渠道,可以享受市場價格4-6折優惠!如果有意向歡迎電話聯系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!

在iteye上看到的一道多線程的題目,參考了一下網友的實現,那Eclipse調試通過,算是對JAVA5的并發庫有個大致的了解,分享出來,歡迎園里的同學拍磚。

題目:

要求用三個線程,按順序打印1,2,3,4,5.... 71,72,73,74, 75.

線程1先打印1,2,3,4,5, 然后是線程2打印6,7,8,9,10, 然后是線程3打印11,12,13,14,15. 接著再由線程1打印16,17,18,19,20....以此類推, 直到線程3打印到75。

分析:感覺出題人是要考察一下你是否能夠很好的控制多線程,讓他們有序的進行。

1、線程池:3個線程,需要使用并發庫的線程池

2、鎖(lcok):在打印的時候,只允許一個線程進入,其他的線程等待

下面的主要的代碼:

import java.util.HashMap;  import java.util.Map;  import java.util.concurrent.CountDownLatch;  import java.util.concurrent.ExecutorService;  import java.util.concurrent.Executors;  import java.util.concurrent.locks.Condition;  import java.util.concurrent.locks.Lock;  import java.util.concurrent.locks.ReentrantLock;   public class NumberPrinter {       private Lock lock = new ReentrantLock();       private Condition c1 = lock.newCondition();      private Condition c2 = lock.newCondition();      private Condition c3 = lock.newCondition();       private Map<Integer, Condition> condtionContext =           new HashMap<Integer, Condition>();       public NumberPrinter() {          condtionContext.put(Integer.valueOf(0), c1);          condtionContext.put(Integer.valueOf(1), c2);          condtionContext.put(Integer.valueOf(2), c3);      }            private int count = 0;               public void print(int id) {          lock.lock();          try {              while(count*5 < 75) {                  int curID = calcID();                  if (id == curID) {                      for (int i = 1; i<=5; i++) {                          System.out.print(count*5 +i+ ",");                      }                      System.out.println();                      count++;                      int nextID = calcID();                      Condition nextCondition = condtionContext.get(                              Integer.valueOf(nextID));                      //通知下一線程                      nextCondition.signal();                  } else {                      Condition condition = condtionContext.get(                              Integer.valueOf(id));                      condition.await();                  }              }              //通知線程結束              for(Condition c : condtionContext.values()) {                  c.signal();              }          } catch (Exception e) {              e.printStackTrace();          } finally {              lock.unlock();          }      }            private int calcID() {          // TODO Auto-generated method stub          return count % 3;      }        /**       * @param args       */     public static void main(String[] args) {          ExecutorService executor = Executors.newFixedThreadPool(3);          final CountDownLatch latch = new CountDownLatch(1);             final NumberPrinter printer = new NumberPrinter();           for (int i = 0; i < 3; i++) {                 final int id = i;              executor.submit(new Runnable() {                  @Override                 public void run() {                      // TODO Auto-generated method stub                      try {                          latch.await();                      } catch (InterruptedException e) {                          // TODO Auto-generated catch block                          e.printStackTrace();                      }                      printer.print(id);                  }              });          }          System.out.println("三個任務開始順序打印數字。。。。。。");           latch.countDown();          executor.shutdown();      }  }

上述內容就是java多線程題目的解決方案,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注創新互聯行業資訊頻道。

當前名稱:java多線程題目的解決方案
本文鏈接:http://www.kartarina.com/article22/jeeocc.html

成都網站建設公司_創新互聯,為您提供網站建設企業建站品牌網站設計網站排名網站內鏈微信小程序

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都定制網站網頁設計
主站蜘蛛池模板: 亚洲成A∨人片天堂网无码| 亚洲av无码片vr一区二区三区| 亚洲av无码专区青青草原| 久久亚洲AV成人无码软件| 亚洲AV色无码乱码在线观看| 国模无码人体一区二区| 日韩av无码国产精品| 国产精品无码无需播放器| 一本一道VS无码中文字幕| 无码日韩人妻精品久久蜜桃| 成人免费无码大片a毛片| 精品亚洲AV无码一区二区| 亚洲AV无码专区电影在线观看 | 久久久久亚洲AV无码去区首| 中文字幕av无码不卡免费| 无码一区二区波多野结衣播放搜索 | 人妻av无码专区| 人妻aⅴ中文字幕无码| 中文无码一区二区不卡αv| 亚洲av永久无码精品漫画 | 无码人妻一区二区三区一| 亚洲av无码不卡| 国产日韩AV免费无码一区二区三区| 中文无码热在线视频| 中文AV人妻AV无码中文视频| 久久老子午夜精品无码| 亚洲国产精品成人精品无码区在线 | 亚洲国产AV无码一区二区三区| 国内精品人妻无码久久久影院| 成人无码精品1区2区3区免费看| 亚洲无码精品浪潮| 中文字幕乱码人妻无码久久| 中文无码vs无码人妻| 亚洲欧洲无码AV电影在线观看 | 无码精品人妻一区二区三区漫画 | 无码AV片在线观看免费| 无码国内精品久久人妻蜜桃| 亚洲AV区无码字幕中文色| 无码人妻精品一区二区三区夜夜嗨 | 人妻无码αv中文字幕久久琪琪布| 亚洲AV永久无码精品|