如何控制多執行緒執行順序

2022-01-30 00:33:30 字數 1040 閱讀 7320

如果我們new了好幾個執行緒,然後開始執行,肯定不是按照順序執行的,因為多執行緒.start()方法開始執行之後,並不意味著立即執行,而是到就緒狀態,等待cpu的排程,cpu如何排程,那我們就沒法知道了,但是如何讓執行緒按照指定的順序來執行呢?我們可以利用執行緒的join方法。join()方法的主要作用是讓正在執行的執行緒停止,讓join的這個執行緒立刻執行並結束。

看例子:

public

static

void main(string arg) throws

interruptedexception

結果肯定是按照順序來的

111111

222222

333333

444444

不信的話,可以把join方法去掉試試。

jdk5以後出來乙個類,可以簡化這樣的操作,new乙個執行緒池,把執行緒放到執行緒池裡執行,同樣可以按照順序執行。

thread thread1 = new thread(() -> system.out.println("111111"));

thread thread2 = new thread(() -> system.out.println("222222"));

thread thread3 = new thread(() -> system.out.println("333333"));

thread thread4 = new thread(() -> system.out.println("444444"));

executorservice threadexecutor =executors.newsinglethreadexecutor();

threadexecutor.submit(thread1);

threadexecutor.submit(thread2);

threadexecutor.submit(thread3);

threadexecutor.submit(thread4);

threadexecutor.shutdown();

如何控制多執行緒執行順序

如果我們new了好幾個執行緒,然後開始執行,肯定不是按照順序執行的,因為多執行緒.start 方法開始執行之後,並不意味著立即執行,而是到就緒狀態,等待cpu的排程,cpu如何排程,那我們就沒法知道了,但是如何讓執行緒按照指定的順序來執行呢?我們可以利用執行緒的join方法。join 方法的主要作用...

控制多執行緒執行順序

雖然專案用不上,先備份吧,控制多執行緒執行順序有兩種方法 1.通過join方法保證多執行緒的順序性的特性 join 讓主線程等待子執行緒結束後才能繼續執行 public static void main string args throws interrupterexception 2.excuto...

多執行緒02 如何控制線程執行順序

這裡使用join 方法 api中那句 等待該執行緒終止 主語是join方法被呼叫時所處的執行緒,該執行緒 是指呼叫join方法的執行緒。比如現在有a b兩個執行緒物件,在a執行緒 現b.join 那麼a執行緒將會被阻塞 或者說掛起 直到b執行緒執行完畢才會繼續執行b.join 語句下面的 即繼續執行...