Java线程池在运行后的结果反查

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

泽库网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站设计等网站项目制作,到程序开发,运营维护。创新互联2013年开创至今到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。

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

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

Java代码

 
 
 
  1. import java.util.concurrent.*; 
  2. public class ExecutorTest { 
  3. public static void main(String[] args) throws 
    InterruptedException, 
  4. ExecutionException { 
  5. ExecutorService es = Executors.newSingleThreadExecutor(); 
  6. Future fr = es.submit(new RunnableTest());// 提交任务 
  7. Future fc = es.submit(new CallableTest());// 提交任务 
  8. // 取得返回值并输出 
  9. System.out.println((String) fc.get()); 
  10. // 检查任务是否执行完毕 
  11. if (fr.isDone()) { 
  12. System.out.println("执行完毕-RunnableTest.run()"); 
  13. } else { 
  14. System.out.println("未执行完-RunnableTest.run()"); 
  15. // 检查任务是否执行完毕 
  16. if (fc.isDone()) { 
  17. System.out.println("执行完毕-CallableTest.run()"); 
  18. } else { 
  19. System.out.println("未执行完-CallableTest.run()"); 
  20. // 停止线程池服务 
  21. es.shutdown(); 
  22. class RunnableTest implements Runnable { 
  23. public void run() { 
  24. System.out.println("已经执行-RunnableTest.run()"); 
  25. class CallableTest implements Callable { 
  26. public Object call() { 
  27. System.out.println("已经执行-CallableTest.call()"); 
  28. return "返回值-CallableTest.call()"; 
  29. import java.util.concurrent.*;
  30. public class ExecutorTest {
  31. public static void main(String[] args) throws 
    InterruptedException,
  32. ExecutionException {
  33. ExecutorService es = Executors.newSingleThreadExecutor();
  34. Future fr = es.submit(new RunnableTest());// 提交任务
  35. Future fc = es.submit(new CallableTest());// 提交任务
  36. // 取得返回值并输出
  37. System.out.println((String) fc.get());
  38. // 检查任务是否执行完毕
  39. if (fr.isDone()) {
  40. System.out.println("执行完毕-RunnableTest.run()");
  41. } else {
  42. System.out.println("未执行完-RunnableTest.run()");
  43. }
  44. // 检查任务是否执行完毕
  45. if (fc.isDone()) {
  46. System.out.println("执行完毕-CallableTest.run()");
  47. } else {
  48. System.out.println("未执行完-CallableTest.run()");
  49. }
  50. // 停止线程池服务
  51. es.shutdown();
  52. }
  53. }
  54. class RunnableTest implements Runnable {
  55. public void run() {
  56. System.out.println("已经执行-RunnableTest.run()");
  57. }
  58. }
  59. class CallableTest implements Callable {
  60. public Object call() {
  61. System.out.println("已经执行-CallableTest.call()");
  62. return "返回值-CallableTest.call()";
  63. }
  64. }

运行结果:

已经执行-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。内容未经允许不得转载,或转载时需注明来源: 快上网