1. 程式人生 > >三個執行緒T1,T2,T3.保證順序執行的三種方法

三個執行緒T1,T2,T3.保證順序執行的三種方法

複製程式碼
             Thread t1 = new Thread(new Runnable() {
                public void run() {
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    System.out.println(Thread.currentThread().getName() + " run 1");
                }
            }, "T1");
             Thread t2 = new Thread(new Runnable() {
                public void run() {
                    try {
                        Thread.sleep(2000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    System.out.println(Thread.currentThread().getName() + " run 2");
                }
            }, "T2");
             Thread t3 = new Thread(new Runnable() {
                public void run() {
                    try {
                        Thread.sleep(3000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    System.out.println(Thread.currentThread().getName() + " run 3");
                }
            }, "T3");

            //三個執行緒順序執行 第一種方案,單個執行緒池 順序放入執行佇列中
            ExecutorService executor = Executors.newSingleThreadExecutor();

            executor.submit(t3);
            executor.submit(t2);
            executor.submit(t1);
            executor.shutdown();
            //輸出結果如下:
//            pool-1-thread-1 run 3
//            pool-1-thread-1 run 2
//            pool-1-thread-1 run 1
複製程式碼

相關推薦

執行T1,T2,T3.保證順序執行方法

Thread t1 = new Thread(new Runnable() { public void run() { try { Thread.sleep(100

執行T1 T2 T3,如何保證他們按順序執行

T3先執行,在T3的run中,呼叫t2.join,讓t2執行完成後再執行t3 在T2的run中,呼叫t1.join,讓t1執行完成後再讓T2執行 public class JoinTest2 { // 1.現在有T1、T2、T3三個執行緒,你怎樣保證T2在T1

Java中如何讓執行按照自己指定的順序執行

我們在日常的多執行緒開發中,可能有時會想讓每個執行緒都按照我們指定的順序來執行,而不是讓CPU隨機排程,這樣可能會讓我們在日常的開發工作中帶來不必要的麻煩。既然有了這個需求,也就引入了本文的標題,讓執行緒按照自己指定的順序來執行。 有興趣的同學可以猜想下列程式碼可能執行的結

Java多執行超時範圍內等待完成的幾方法

        在工程專案中可能會有這麼一個場景,客戶端處理層需要從服務端(CDN/圖片伺服器)獲取n張圖片(參考微博一個人最多有9張圖片),那麼問題來了,如何在一定的時間範圍內儘可能多的獲取到圖片。當然,最為簡單粗暴的方法就是通過序列的方式來獲取,但是如果第一個請求hang

linux c 執行間同步(通訊)的幾方法--互斥鎖,條件變數,訊號量,讀寫鎖

轉載自:https://blog.csdn.net/vertor11/article/details/55657619Linux下提供了多種方式來處理執行緒同步,最常用的是互斥鎖、條件變數、訊號量和讀寫鎖。 下面是思維導圖: 一、互斥鎖(mutex)   鎖機制是同一時刻只允

Java中讓執行按照自己指定的順序執行

我們在日常的多執行緒開發中,可能有時會想讓每個執行緒都按照我們指定的順序來執行,而不是讓CPU隨機排程,這樣可能會讓我們在日常的開

現在有T1T2T3執行,你怎樣保證T2T1執行完後執行T3T2執行完後執行

這是個基礎的執行緒問題,主要是考核join方法的。不瞭解這個方法的話會感覺很懵逼。 假設現在有兩個執行緒A、B。如果在A的run方法中呼叫B.join(),表示A需要在B執行緒上面等待,也就是需要在B執行緒執行完成之後才能再次執行。瞭解這個概念之後,這個問題就很簡單了,java程式碼如下:

執行保證順序執行

第一種:         用Thread.join() 方法 確定該執行緒執行完畢,先建立執行緒1,然後建立執行緒2,在run()方法裡面呼叫執行緒2.join(),接著建立執行緒3,在run()方法裡面呼叫執行緒3.join() 第二種 執行緒池   newSin

筆記:Java實現執行A B C,BC執行執行完再執行A線

final Lock lc = new ReentrantLock(); .. run() { lc.lock(); ... lc.unlock(); } 可能開啟方式不對吧,沒實現! 改用join() 可以實現(BC與A以單執行緒模式執行),程式碼如下: package

java實現執行A B C,A執行列印A之後才能B執行列印B,然後接著C執行執行列印C,繼而迴圈下去

最近看到有人提問這個問題,而且好多人又是轉載的,寫了一大堆,看的我頭都大了。於是自己做了個小程式輕鬆解決。 附上程式碼: package pcitc; import java.util.concurrent.locks.Lock; import java.util.conc

執行分別列印ABC,按順序輸出ABCABC...

#include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <unistd.h> #include <vector> #include

假如有Thread1、Thread2、Thread3執行分別統計C、D、E盤的大小,所有執行都統計完畢交給Thread4執行去做彙總

如題:有三種解決方法第一種是實現callable方法,重寫call方法http://blog.csdn.net/silyvin/article/details/79235111我個人不想用這個方法,所以只貼了連結第二種方法:join方法建立3個執行緒Runnable r1 =

執行基礎二(執行的啟動、終止,執行面臨的問題)

一、執行緒的啟動、終止方式   啟動: start native(呼叫外部介面啟動)     終止:    stop(類似kill,暴力終止)  interrupt 中斷的方式 通過指令的方式 volatile boolean stop

執行、多程序之比較,以及執行模型。

工作幾年找工作幾乎總會被問,從最開始的從網上看答案,到現在憑自己的經驗去說,這個問題似乎也是經驗積累的一個驗證,最近沒事就總結一下吧: 程序和執行緒的定義、比較等: 程序:處於活動狀態的計算機程式。程序就是在作業系統中       執行特定的任務,程序針對

執行(二)Java多執行,啟動四執行,兩執行加一,另外兩執行減一

  public class Test { public static void main(String[] args) { final ShareData data = new ShareData(); for (int i = 0; i < 2; i++) {

python筆記 5-6 執行和多工, 互斥鎖 TCP 次握手和四次揮手

day5 執行緒和多工 TCP的三次握手用於建立連線標誌位 SYN連線請求 FIN關閉連線 ACK確認序號 seq報文序號 ack確認號 TCP的四次揮手用於斷開連線 MSL最大報文生存時間 多工 同一時間多個程式同時執行 執行緒 程式的分支,系統排程和分派的最小單位擁

【NOIP模擬】T1+T2+T3

T1 解析:        考前15分鐘發現自己讀錯題了是真的爽。。。        所以就是一道搜尋,當記錄一下當前實際位置和在迴圈圖上的位置,題解也說得很清楚。 程式碼(DFS): #include <bits/stdc++.h> using n

5步驟,教你瞬間明白執行和中原六仔出售執行安全

記得中原六仔出售 dsluntan.com Q:3393756370 VX:17061863513今年3月份剛來杭州面試的時候,有一家公司的技術總監問了我這樣一個問題:你來說說有哪些執行緒安全的類?我心裡一想,這我早都背好了,稀里嘩啦說了一大堆。 他又接著問:

執行順序控制:四執行A、B、C、D向四檔案寫入資料。要求A執行只寫入A,B執行只寫入B……

四個執行緒A、B、C、D向四個檔案寫入資料。要求A執行緒只寫入A,B執行緒只寫入B…… 最終達到的效果: A.txt內容為: A    B     C    D  &nbs

JAVA併發:多執行程式設計之同步“監視器monitor”(

在JAVA虛擬機器中,每個物件(Object和class)通過某種邏輯關聯監視器,為了實現監視器的互斥功能,每個物件(Object和class)都關聯著一個鎖(有時也叫“互斥量”),這個鎖在作業系統書籍中稱為“訊號量”,互斥(“mutex”)是一個二進位制的訊號量。 如果一個執行緒擁有了某些資料的鎖,其他的