Java 多線程傳值的四種方法
其實(shí)大家都知道多線程傳值有三種方式:
1:通過(guò)構(gòu)造方法傳遞數(shù)據(jù)
2:通過(guò)變量和方法傳遞數(shù)據(jù)
3:通過(guò)回調(diào)函數(shù)傳遞數(shù)據(jù)
那么博主有個(gè)非常變態(tài)的需求,所以找出了第四種實(shí)現(xiàn)方式,先看效果圖:

動(dòng)態(tài)Cron4j調(diào)度器,我曾經(jīng)發(fā)過(guò)類似的文章,可以去搜索一下.
點(diǎn)擊執(zhí)行走下邊的代碼,然后根據(jù)類名反編譯
public static void executeCron4j(String packageClass){
try {
Object taskObj = classNewInstance(packageClass);
/** 只接受Runnable的定時(shí)器 **/
if (taskObj instanceof Runnable) {
Runnable task = (Runnable)taskObj;
Thread t1 = new Thread(new Runnable() {
public void run() {
task.run();
}
});
t1.start();
}
} catch (Exception e) {
e.printStackTrace();
}
}
線程類:(注意:線程要和上邊設(shè)置的包名一致)
public void run() {
TCron4j cron4j = TCron4j.dao.findByClass(this.getClass().getName());//根據(jù)包名反編譯,然后查詢數(shù)據(jù)庫(kù)
}
現(xiàn)在博主的需求是:有可能在同一個(gè)線程類執(zhí)行不一樣的程序。
上邊兩個(gè)紅框中的cron4j調(diào)度器使用的是一個(gè),根據(jù)參數(shù)不同來(lái)執(zhí)行的。如果我點(diǎn)擊后邊的手動(dòng)執(zhí)行一次,按照我上邊給出的java代碼是無(wú)法實(shí)現(xiàn)的。
看下邊的新的代碼:
public static void executeCron4j(String packageClass){
try {
Object taskObj = classNewInstance(packageClass);
/** 只接受Runnable的定時(shí)器 **/
if (taskObj instanceof Runnable) {
Runnable task = (Runnable)taskObj;
Thread t1 = new Thread(new Runnable() {
public void run() {
task.run();
}
});
t1.setName("uuid");//這個(gè)是線程的名字
t1.start();
}
} catch (Exception e) {
e.printStackTrace();
}
}
從上邊的代碼可以看出,第四種傳值方式是通過(guò)設(shè)置線程的名字來(lái)操作的。
這個(gè)名字你可以傳一個(gè)id,然后去數(shù)據(jù)庫(kù)查詢更多的參數(shù)。
public void run() {
TCron4j cron4j = TCron4j.dao.findByUUID(Thread.currentThread().getName());//根據(jù)線程名字查詢數(shù)據(jù)庫(kù)
}
這種方式完美的解決了博主的難題?,F(xiàn)在共享出來(lái)分享給大家!??!
以上就是Java 多線程傳值的四種方法的詳細(xì)內(nèi)容,更多關(guān)于Java 多線程傳值的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
如何從Java環(huán)境中調(diào)用GoLang函數(shù)
Go,常被稱為GoLang,Go語(yǔ)言憑借其豐富的標(biāo)準(zhǔn)庫(kù),以及 goroutines和 channels等獨(dú)特特性,在開(kāi)發(fā)可擴(kuò)展且高效的程序方面展現(xiàn)了顯著優(yōu)勢(shì),許多開(kāi)發(fā)者傾向于將Go與其他編程語(yǔ)言結(jié)合使用,在本文中,我們將深入探討如何從Java環(huán)境中調(diào)用GoLang函數(shù),以實(shí)現(xiàn)兩種語(yǔ)言的無(wú)縫集成2025-01-01
spring的TransactionalEventListener事務(wù)感知源碼解析
這篇文章主要為大家介紹了spring的TransactionalEventListener事務(wù)感知源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
spring mvc使用@InitBinder標(biāo)簽對(duì)表單數(shù)據(jù)綁定的方法
這篇文章主要介紹了spring mvc使用@InitBinder標(biāo)簽對(duì)表單數(shù)據(jù)綁定的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-03-03
java如何執(zhí)行bat腳本,并監(jiān)控執(zhí)行結(jié)果
這篇文章主要介紹了java如何執(zhí)行bat腳本,并監(jiān)控執(zhí)行結(jié)果問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07

