真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么在Java中利用Callable和Future創(chuàng)建線程

本篇文章為大家展示了怎么在Java中利用Callable和Future創(chuàng)建線程,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),諸暨企業(yè)網(wǎng)站建設(shè),諸暨品牌網(wǎng)站建設(shè),網(wǎng)站定制,諸暨網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,諸暨網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

從Java 5開始,Java提供了Callable接口,該接口是Runnable接口的增強(qiáng)版,Callable接口提供了一個(gè)call()方法,可以看作是線程的執(zhí)行體,但call()方法比run()方法更強(qiáng)大。

  • call()方法可以有返回值。

  • call()方法可以聲明拋出異常。

創(chuàng)建并啟動(dòng)線程的步驟如下:

1 創(chuàng)建Callable接口的實(shí)現(xiàn)類,并實(shí)現(xiàn)call()方法,該call()方法將作為該線程的執(zhí)行體,且該call()方法有返回值,再創(chuàng)建Callable的實(shí)例。從Java 8開始,可以直接使用Lamda表達(dá)式創(chuàng)建Callable對(duì)象。

2 使用FutureTask類來包裝Callable對(duì)象,該FutureTask對(duì)象封裝了該Callable對(duì)象的call()方法的返回值。

3 使用FutureTask對(duì)象作為Thread對(duì)象的target創(chuàng)建并啟動(dòng)新線程。

4 調(diào)用FutureTask對(duì)象的get()方法來獲得子線程執(zhí)行結(jié)束后的返回值。

二 代碼

public class ThirdThread
{
   public static void main(String[] args)
   {
      // 創(chuàng)建Callable對(duì)象
      ThirdThread rt = new ThirdThread();
      // 先使用Lambda表達(dá)式創(chuàng)建Callable對(duì)象
      // 使用FutureTask來包裝Callable對(duì)象
      FutureTask task = new FutureTask((Callable)() -> {
        int i = 0;
        for ( ; i < 100 ; i++ )
        {
           System.out.println(Thread.currentThread().getName()
              + " 的循環(huán)變量i的值:" + i);
        }
        // call()方法可以有返回值
        return i;
      });
      for (int i = 0 ; i < 100 ; i++)
      {
        System.out.println(Thread.currentThread().getName()
           + " 的循環(huán)變量i的值:" + i);
        if (i == 20)
        {
           // 實(shí)質(zhì)還是以Callable對(duì)象來創(chuàng)建、并啟動(dòng)線程
           new Thread(task , "有返回值的線程").start();
        }
      }
      try
      {
        // 獲取線程返回值
        System.out.println("子線程的返回值:" + task.get());
      }
      catch (Exception ex)
      {
        ex.printStackTrace();
      }
   }
}

三 運(yùn)行

main 的循環(huán)變量i的值:98
main 的循環(huán)變量i的值:99
有返回值的線程 的循環(huán)變量i的值:23
有返回值的線程 的循環(huán)變量i的值:24
有返回值的線程 的循環(huán)變量i的值:25
......
有返回值的線程 的循環(huán)變量i的值:94
有返回值的線程 的循環(huán)變量i的值:95
有返回值的線程 的循環(huán)變量i的值:96
有返回值的線程 的循環(huán)變量i的值:97
有返回值的線程 的循環(huán)變量i的值:98
有返回值的線程 的循環(huán)變量i的值:99
子線程的返回值:100

上述內(nèi)容就是怎么在Java中利用Callable和Future創(chuàng)建線程,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)頁(yè)標(biāo)題:怎么在Java中利用Callable和Future創(chuàng)建線程
當(dāng)前URL:http://weahome.cn/article/ieedgp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部