查看java线程池运行_Java线程池在运行后的结果反查

Java线程池需要不断的学习,在学习的时候我们就要注意不少的问题。下面我们就来看看具体的语言运作环境如何才能满足Java线程池相关程序的运行。希望大家有所收获。

无论是接收Runnable型参数,还是接收Callable型参数的submit()方法,都会返回一个Future(也是一个接口)类型的对象。该对象中包含了任务的执行情况以及结果。调用Future的boolean isDone()方法可以获知任务是否执行完毕;调用Object get()方法可以获得任务执行后的返回结果,如果此时任务还没有执行完,get()方法会保持等待,直到相应的任务执行完毕后,才会将结果返回。

我们用下面的一个例子来演示Java5.0中Java线程池的使用:

Java代码

import java.util.concurrent.*;

public class ExecutorTest {

public static void main(String[] args) throws

InterruptedException,

ExecutionException {

ExecutorServicees=Executors.newSingleThreadExecutor();

Futurefr=es.submit(new RunnableTest());// 提交任务

Futurefc=es.submit(new CallableTest());// 提交任务

// 取得返回值并输出

System.out.println((String) fc.get());

// 检查任务是否执行完毕

if (fr.isDone()) {

System.out.println("执行完毕-RunnableTest.run()");

} else {

System.out.println("未执行完-RunnableTest.run()");

}

// 检查任务是否执行完毕

if (fc.isDone()) {

System.out.println("执行完毕-CallableTest.run()");

} else {

System.out.println("未执行完-CallableTest.run()");

}

// 停止线程池服务

es.shutdown();

}

}

class RunnableTest implements Runnable {

public void run() {

System.out.println("已经执行-RunnableTest.run()");

}

}

class CallableTest implements Callable {

public Object call() {

System.out.println("已经执行-CallableTest.call()");

return "返回值-CallableTest.call()";

}

}

import java.util.concurrent.*;

public class ExecutorTest {

public static void main(String[] args) throws

InterruptedException,

ExecutionException {

ExecutorServicees=Executors.newSingleThreadExecutor();

Futurefr=es.submit(new RunnableTest());// 提交任务

Futurefc=es.submit(new CallableTest());// 提交任务

// 取得返回值并输出

System.out.println((String) fc.get());

// 检查任务是否执行完毕

if (fr.isDone()) {

System.out.println("执行完毕-RunnableTest.run()");

} else {

System.out.println("未执行完-RunnableTest.run()");

}

// 检查任务是否执行完毕

if (fc.isDone()) {

System.out.println("执行完毕-CallableTest.run()");

} else {

System.out.println("未执行完-CallableTest.run()");

}

// 停止线程池服务

es.shutdown();

}

}

class RunnableTest implements Runnable {

public void run() {

System.out.println("已经执行-RunnableTest.run()");

}

}

class CallableTest implements Callable {

public Object call() {

System.out.println("已经执行-CallableTest.call()");

return "返回值-CallableTest.call()";

}

}

运行结果:

已经执行-RunnableTest.run()

已经执行-CallableTest.call()

返回值-CallableTest.call()

执行完毕-RunnableTest.run()

执行完毕-CallableTest.run()

使用完Java线程池后,需要调用它的shutdown()方法停止服务,否则其中的所有线程都会保持运行,程序不会退出。

【编辑推荐】

【责任编辑:张浩 TEL:(010)68476606】

点赞 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值