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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何在不同線程中運(yùn)行同一個(gè)類的不同方法?

如何在不同線程中運(yùn)行同一個(gè)類的不同方法?

互換的青春 2024-01-17 21:04:10
我想了解如何在java中實(shí)現(xiàn)線程的方式。現(xiàn)在我知道你可以使用runnable帶有 run 方法的接口來(lái)實(shí)現(xiàn)線程。但是,如果我想要同一個(gè)類有兩個(gè)不同的線程,它們運(yùn)行該類的不同方法,該怎么辦?我只能覆蓋 run 方法一次,所以我是否必須區(qū)分線程的名稱,以便運(yùn)行正確的方法?public class PrintState {    private int state = 0;    public synchronized void printNewState() throws InterruptedException {        wait();        System.out.println(state);    }    public synchronized void setValue(int v) {        state = v;        notify();        System.out.println("value set");    }}我想要有兩個(gè)線程同時(shí)運(yùn)行這些方法printNewState(),setValue(12)每個(gè)線程都在不同的線程中。如何run()在主方法中實(shí)現(xiàn)該方法和線程才能實(shí)現(xiàn)此目的?之后的結(jié)果應(yīng)該是:value set12
查看完整描述

1 回答

?
慕標(biāo)琳琳

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超9個(gè)贊

但是,如果我想要同一個(gè)類有兩個(gè)不同的線程,它們運(yùn)行該類的不同方法,該怎么辦?我只能覆蓋 run 方法一次,所以我是否必須區(qū)分線程的名稱,以便運(yùn)行正確的方法?


您需要區(qū)分執(zhí)行線程和正在執(zhí)行的代碼。您可以使用單個(gè)線程Runnable,run()并讓 1000 個(gè)線程執(zhí)行該線程Runnable。這意味著您有 1000 個(gè)線程執(zhí)行相同的代碼,盡管您可能只有一個(gè)Runnable實(shí)例來(lái)處理所有這些線程。


我想要有兩個(gè)線程同時(shí)運(yùn)行 printNewState() 和 setValue(12) 方法,每個(gè)線程都在不同的線程中。


你可以做這樣的事情。請(qǐng)注意,我使用 lambda 來(lái)創(chuàng)建Runnables:


PrintState ps = new ...

Thread t1 = new Thread(ps::printNewState); //t1 will call printNewState

Thread t2 = new Thread(() -> ps.setValue(12)); //t2 will call setValue(12)

t1.start();

t2.start();


查看完整回答
反對(duì) 回復(fù) 2024-01-17
  • 1 回答
  • 0 關(guān)注
  • 166 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)