FutureTask的isDone方法
来源:8-4 如何实现处理线程的返回值

抽象汪
2019-10-01
public boolean isDone() { return state != NEW; }
老师,isDone方法是用来判断当前线程状态是否为NEW,若不为NEW则返回true
那么您的FutrueTaskDemo中,
FutureTask<String> task = new FutureTask<String>(new MyCallable()); new Thread(task).start(); if(!task.isDone()){ System.out.println("task has not finished , please wait"); } System.out.println(task.get());
task线程已经start了,应该是处于Runnable的状态,那么if判断应该是false才对啊,但是运行结果if是为true的,我想知道我是哪个地方理解错了。
写回答
1回答
-
翔仔
2019-10-01
同学好,这里是FutureTask的isDone,而不是Thread的,所以new状态在这里并不一定表示是刚创建的。。源码里 NEW -> COMPLETING -> NORMAL 经历这些过程,COMPLETING表示正要赋值给目标对象,这个过程很短,而且到这里也算完成了,所以用NEW来判断是还处于运行中与否
00
相似问题
weblog方法作用
回答 1
关于一个方法对应的栈帧的个数
回答 1