一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - Java 多線程傳值的四種方法

Java 多線程傳值的四種方法

2020-09-12 00:43sunjs Java教程

這篇文章主要介紹了Java 多線程傳值的四種方法,幫助大家更好的理解和學(xué)習(xí)Java,感興趣的朋友可以了解下

其實(shí)大家都知道多線程傳值有三種方式:

1:通過構(gòu)造方法傳遞數(shù)據(jù)
2:通過變量和方法傳遞數(shù)據(jù)
3:通過回調(diào)函數(shù)傳遞數(shù)據(jù)

那么博主有個(gè)非常變態(tài)的需求,所以找出了第四種實(shí)現(xiàn)方式,先看效果圖:

Java 多線程傳值的四種方法

動(dòng)態(tài)Cron4j調(diào)度器,我曾經(jīng)發(fā)過類似的文章,可以去搜索一下.

點(diǎn)擊執(zhí)行走下邊的代碼,然后根據(jù)類名反編譯

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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è)置的包名一致)

?
1
2
3
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ù)不同來執(zhí)行的。如果我點(diǎn)擊后邊的手動(dòng)執(zhí)行一次,按照我上邊給出的java代碼是無法實(shí)現(xiàn)的。

看下邊的新的代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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();
    }
  }

從上邊的代碼可以看出,第四種傳值方式是通過設(shè)置線程的名字來操作的。

這個(gè)名字你可以傳一個(gè)id,然后去數(shù)據(jù)庫(kù)查詢更多的參數(shù)。

?
1
2
3
public void run() {
  TCron4j cron4j = TCron4j.dao.findByUUID(Thread.currentThread().getName());//根據(jù)線程名字查詢數(shù)據(jù)庫(kù)
}

這種方式完美的解決了博主的難題。現(xiàn)在共享出來分享給大家!!!

以上就是Java 多線程傳值的四種方法的詳細(xì)內(nèi)容,更多關(guān)于Java 多線程傳值的資料請(qǐng)關(guān)注服務(wù)器之家其它相關(guān)文章!

原文鏈接:https://www.sunjs.com/article/detail/e2f95bf4a7974870ab1848063bf55ffc.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 韩国禁片在线观看久 | 国产精品久久国产精品99 | 99视频在线免费 | 国产精品3p视频 | 精品久久香蕉国产线看观看亚洲 | 高清国产欧美一v精品 | 花核调教 | 办公室的秘密在线观看 | 免费视频 久久久 | 亚洲精品久久久992KVTV | 午夜黄视频 | 色哟哟国产成人精品 | 91一个人的在线观看www | 成人性生交大片免费看软件 | 微福利92合集 | 精品一区二区三区免费站 | 日本护士xxxx视频免费 | 亚洲 欧美 制服 校园 动漫 | 午夜欧美精品久久久久久久 | 欧亚精品一区二区三区 | 久久久久久久电影 | 亚洲 欧美 中文 日韩 另类 | 欧美一级片在线看 | 久久伊人电影 | 日韩视频在线免费观看 | 欧美骚熟 | 古代双性美人被老糟蹋 | 色cccwww在线播放 | 免费国产成人 | 99视频在线看观免费 | 激情视频激情小说 | 国产欧美日韩成人 | 日本高清在线观看天码888 | 日本艳鉧动漫1~6在线观看 | 草草草在线 | 精品午夜寂寞影院在线观看 | 欧美日韩免费一区二区在线观看 | 娇妻被又大又粗又长又硬好爽 | 男人的天堂久久 | 欧美日韩中文国产一区二区三区 | 男人把j放进女人的p里视频 |