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

資訊專欄INFORMATION COLUMN

java并發(fā)編程學習之FutureTask

BothEyes1993 / 2240人閱讀

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

FutureTask

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

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

isCancelled:判斷任務是否被取消,任務結(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");
        }
    }
}

運行結(jié)果如下:

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

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

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

相關(guān)文章

  • java并發(fā)編程習之三種線程啟動方式

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

    enrecul101 評論0 收藏0
  • java并發(fā)編程習之線程池-AbstractExecutorService(二)

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

    Jokcy 評論0 收藏0
  • java并發(fā)編程習之synchronize(一)

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

    Elle 評論0 收藏0
  • java并發(fā)編程習之再談公平鎖和非公平鎖

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

    warkiz 評論0 收藏0
  • java并發(fā)編程習之Volatile

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

    thekingisalwaysluc 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<