国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

java并發(fā)編程學(xué)習(xí)之FutureTask

BothEyes1993 / 2234人閱讀

摘要:在并發(fā)編程學(xué)習(xí)之三種線程啟動(dòng)方式中有提過。是否執(zhí)行結(jié)束,包括正常執(zhí)行結(jié)束或異常結(jié)束。獲取返回值,沒有得到返回值前一直阻塞。運(yùn)行結(jié)果如下由于任務(wù)被取消,所以拋出異常。注意的是,此時(shí)線程還在跑,和返回的是。并不能讓任務(wù)真正的結(jié)束。

FutureTask

在java并發(fā)編程學(xué)習(xí)之三種線程啟動(dòng)方式中有提過。主要的方法如下:

cancel(boolean mayInterruptIfRunning):取消任務(wù)的執(zhí)行失敗,返回false,比如任務(wù)已經(jīng)執(zhí)行結(jié)束,或者已經(jīng)被取消,或者不能被取消。如果執(zhí)行成功了,返回ture。mayInterruptIfRunning的作用是是否中斷,如果是true則中斷,本質(zhì)還是調(diào)用interrupt方法。

isCancelled:判斷任務(wù)是否被取消,任務(wù)結(jié)束包括正常執(zhí)行結(jié)束或異常結(jié)束,返回true。

isDone:是否執(zhí)行結(jié)束,包括正常執(zhí)行結(jié)束或異常結(jié)束。結(jié)束返回true。

get:獲取返回值,沒有得到返回值前一直阻塞。

public class FutureTaskDemo {
    static class Thread1 implements Callable {


        @Override
        public Object call() throws Exception {
            System.out.println("before fun");
            fun();
            System.out.println("after fun");
            return null;
        }

        public void fun() {
            while (true) {

            }
        }
    }

    public static void main(String[] args) {
        Thread1 thread1 = new Thread1();
        FutureTask futureTask = new FutureTask(thread1);
        Thread thread = new Thread(futureTask);
        thread.start();
        try {
            Thread.sleep(1000);
            System.out.println("cancel:" + futureTask.cancel(true));
            Thread.sleep(1000);
            System.out.println("isCancelled:" + futureTask.isCancelled());
            System.out.println("isDone:" + futureTask.isDone());
            System.out.println(futureTask.get());
        } catch (InterruptedException e) {
            System.out.println("InterruptedException");
        } catch (ExecutionException e) {
            System.out.println("ExecutionException");
        } catch (CancellationException e) {
            System.out.println("CancellationException");
        }
    }
}

運(yùn)行結(jié)果如下:

由于任務(wù)被取消,所以拋出CancellationException異常。注意的是,此時(shí)thread1線程還在跑,isCancelled和isDone返回的是true。cancel并不能讓任務(wù)真正的結(jié)束。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/75319.html

相關(guān)文章

  • java并發(fā)編程學(xué)習(xí)之三種線程啟動(dòng)方式

    摘要:類這是方式啟動(dòng)的運(yùn)行結(jié)果如下接口這是方式啟動(dòng)的運(yùn)行結(jié)果如下接口運(yùn)行結(jié)果如下接口和接口的區(qū)別可以有返回值。通過包裝成,傳遞給,因?yàn)槭菍?shí)現(xiàn)了接口。 類Thread public class ThreadDemo extends Thread { public static void main(String[] args) { ThreadDemo thread = ...

    enrecul101 評(píng)論0 收藏0
  • java并發(fā)編程學(xué)習(xí)之線程池-AbstractExecutorService(二)

    摘要:抽象類,實(shí)現(xiàn)了的接口。將任務(wù)封裝成提交任務(wù)主要方法在任務(wù)是否超時(shí)超時(shí)時(shí)間任務(wù)書用于存放結(jié)果的,先完成的放前面。 AbstractExecutorService抽象類,實(shí)現(xiàn)了ExecutorService的接口。 newTaskFor 將任務(wù)封裝成FutureTask protected RunnableFuture newTaskFor(Runnable runnable, T va...

    Jokcy 評(píng)論0 收藏0
  • java并發(fā)編程學(xué)習(xí)之synchronize(一)

    摘要:線程安全問題在并發(fā)編程學(xué)習(xí)之基礎(chǔ)概念提到,多線程的劣勢(shì)之一,有個(gè)線程安全問題,現(xiàn)在看看下面的例子。那么,該怎么解決呢,很簡(jiǎn)單,在方法前加個(gè)同步鎖。運(yùn)行結(jié)果如下有兩種情況,是因?yàn)榭凑l先搶占鎖,但是輸出的算法結(jié)果是正確的。 線程安全問題 在java并發(fā)編程學(xué)習(xí)之基礎(chǔ)概念提到,多線程的劣勢(shì)之一,有個(gè)線程安全問題,現(xiàn)在看看下面的例子。 public class NotSafeDemo { ...

    Elle 評(píng)論0 收藏0
  • java并發(fā)編程學(xué)習(xí)之再談公平鎖和非公平鎖

    摘要:在并發(fā)編程學(xué)習(xí)之顯示鎖里有提過公平鎖和非公平鎖,我們知道他的使用方式,以及非公平鎖的性能較高,在源碼分析的基礎(chǔ)上,我們看看和的區(qū)別在什么地方。而非公平鎖直接嘗試獲取鎖。 在java并發(fā)編程學(xué)習(xí)之顯示鎖Lock里有提過公平鎖和非公平鎖,我們知道他的使用方式,以及非公平鎖的性能較高,在AQS源碼分析的基礎(chǔ)上,我們看看NonfairSync和FairSync的區(qū)別在什么地方。 lock方法 ...

    warkiz 評(píng)論0 收藏0
  • java并發(fā)編程學(xué)習(xí)之Volatile

    摘要:但是的語(yǔ)義不足以確保遞增操作的原子性,在多線程的情況下,線程不一定是安全的。檢查某個(gè)狀態(tài)標(biāo)記,以判斷是否退出循環(huán)某個(gè)方法這邊和用普通的變量的區(qū)別是,在多線程的情況下,取到后,的值被改變了,判斷會(huì)不正確。 多線程為什么是不安全的 這邊簡(jiǎn)單的講述一下,參考java并發(fā)編程學(xué)習(xí)之synchronize(一) 當(dāng)線程A和線程B同時(shí)進(jìn)入num = num + value; 線程A會(huì)把num的值...

    thekingisalwaysluc 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<