Java线程池需要不断的学习在学习的时候我们就要注意不少的问题下面我们就来看看具体的语言运作环境如何才能满足Java线程池相关程序的运行希望大家有所收获
无论是接收Runnable型参数还是接收Callable型参数的submit()方法都会返回一个Future(也是一个接口)类型的对象该对象中包含了任务的执行情况以及结果调用Future的boolean isDone()方法可以获知任务是否执行完毕调用Object get()方法可以获得任务执行后的返回结果如果此时任务还没有执行完get()方法会保持等待直到相应的任务执行完毕后才会将结果返回
我们用下面的一个例子来演示Java中Java线程池的使用
Java代码
import ncurrent*;
public class ExecutorTest {
public static void main(String[] args) throws
InterruptedException
ExecutionException {
ExecutorService es = ExecutorsnewSingleThreadExecutor();
Future fr = essubmit(new RunnableTest());// 提交任务
Future fc = essubmit(new CallableTest());// 提交任务
// 取得返回值并输出
Systemoutprintln((String) fcget());
// 检查任务是否执行完毕
if (frisDone()) {
Systemoutprintln(执行完毕RunnableTestrun());
} else {
Systemoutprintln(未执行完RunnableTestrun());
}
// 检查任务是否执行完毕
if (fcisDone()) {
Systemoutprintln(执行完毕CallableTestrun());
} else {
Systemoutprintln(未执行完CallableTestrun());
}
// 停止线程池服务
esshutdown();
}
}
class RunnableTest implements Runnable {
public void run() {
Systemoutprintln(已经执行RunnableTestrun());
}
}
class CallableTest implements Callable {
public Object call() {
Systemoutprintln(已经执行CallableTestcall());
return 返回值CallableTestcall();
}
}
import ncurrent*;
public class ExecutorTest {
public static void main(String[] args) throws
InterruptedException
ExecutionException {
ExecutorService es = ExecutorsnewSingleThreadExecutor();
Future fr = essubmit(new RunnableTest());// 提交任务
Future fc = essubmit(new CallableTest());// 提交任务
// 取得返回值并输出
Systemoutprintln((String) fcget());
// 检查任务是否执行完毕
if (frisDone()) {
Systemoutprintln(执行完毕RunnableTestrun());
} else {
Systemoutprintln(未执行完RunnableTestrun());
}
// 检查任务是否执行完毕
if (fcisDone()) {
Systemoutprintln(执行完毕CallableTestrun());
} else {
Systemoutprintln(未执行完CallableTestrun());
}
// 停止线程池服务
esshutdown();
}
}
class RunnableTest implements Runnable {
public void run() {
Systemoutprintln(已经执行RunnableTestrun());
}
}
class CallableTest implements Callable {
public Object call() {
Systemoutprintln(已经执行CallableTestcall());
return 返回值CallableTestcall();
}
}
运行结果
已经执行RunnableTestrun()
已经执行CallableTestcall()
返回值CallableTestcall()
执行完毕RunnableTestrun()
执行完毕CallableTestrun()
使用完Java线程池后需要调用它的shutdown()方法停止服务否则其中的所有线程都会保持运行程序不会退出