Java线程池需要不断的学习,在学习的时候我们就要注意不少的问题。下面我们就来看看具体的语言运作环境如何才能满足Java线程池相关程序的运行。希望大家有所收获。
泽库网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站设计等网站项目制作,到程序开发,运营维护。创新互联2013年开创至今到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。
无论是接收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 {
- ExecutorService es = Executors.newSingleThreadExecutor();
- Future fr = es.submit(new RunnableTest());// 提交任务
- Future fc = 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 {
- ExecutorService es = Executors.newSingleThreadExecutor();
- Future fr = es.submit(new RunnableTest());// 提交任务
- Future fc = 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()方法停止服务,否则其中的所有线程都会保持运行,程序不会退出。
文章标题:Java线程池在运行后的结果反查
文章源于:http://www.csdahua.cn/qtweb/news11/402811.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网