第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在同一線程上兩次調(diào)用start方法是否合法?

在同一線程上兩次調(diào)用start方法是否合法?

qq_笑_17 2019-10-17 13:12:11
以下代碼導致java.lang.IllegalThreadStateException: Thread already started我在程序中第二次調(diào)用start()方法。updateUI.join();    if (!updateUI.isAlive())     updateUI.start();這是第二次updateUI.start()被調(diào)用。我已經(jīng)遍歷了多次,并且在命中之前調(diào)用了線程并完全運行完成updateUI.start()。調(diào)用updateUI.run()避免了該錯誤,但導致線程在UI線程(如SO上其他文章中提到的調(diào)用線程)中運行,這不是我想要的。線程只能啟動一次嗎?如果是,那么如果我想再次運行線程該怎么辦?如果我沒有在線程中執(zhí)行比UI線程中完成的操作,則該特定線程在后臺進行一些計算,并且用戶會有不合理的漫長等待。
查看完整描述

3 回答

?
喵喵時光機

TA貢獻1846條經(jīng)驗 獲得超7個贊

根據(jù)Java API規(guī)范中的Thread.start方法:


一次啟動一個線程永遠是不合法的。特別是,線程一旦完成執(zhí)行就可能不會重新啟動。


此外:


拋出:

IllegalThreadStateException-如果線程已經(jīng)啟動。


所以是的,a Thread只能啟動一次。


如果是,那么如果我想再次運行線程該怎么辦?


如果一個Thread需求需要運行多次,那么應該創(chuàng)建一個新實例Thread并調(diào)用start它。


查看完整回答
反對 回復 2019-10-17
?
開滿天機

TA貢獻1786條經(jīng)驗 獲得超13個贊

不,我們不能再次啟動Thread,這樣做將引發(fā)runtimeException java.lang.IllegalThreadStateException。>


原因是一旦Thread執(zhí)行run()方法,它將進入死狀態(tài)。


讓我們舉一個例子-考慮再次啟動線程并在其上調(diào)用start()方法(內(nèi)部將調(diào)用run()方法)就像讓死人醒來并運行一樣。因為,在完成他的生命后,人將進入死亡狀態(tài)。


public class MyClass implements Runnable{


    @Override

    public void run() {

           System.out.println("in run() method, method completed.");

    }


    public static void main(String[] args) {

                  MyClass obj=new MyClass();            

        Thread thread1=new Thread(obj,"Thread-1");

        thread1.start();

        thread1.start(); //will throw java.lang.IllegalThreadStateException at runtime

    }


}

/ *在run()方法中輸出,方法已完成。線程“主”中的異常java.lang.Thread.start上的java.lang.IllegalThreadStateException(未知源)* /


查看完整回答
反對 回復 2019-10-17
  • 3 回答
  • 0 關注
  • 679 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號