自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Java線程池在運(yùn)行后的結(jié)果反查

開發(fā) 后端
Java線程池在運(yùn)行的過程中需要注意結(jié)果的反查,其實(shí)我們需要不斷的學(xué)習(xí)以應(yīng)付不斷變化的語(yǔ)言環(huán)境。下面的代碼希望大家有所收獲。

Java線程池需要不斷的學(xué)習(xí),在學(xué)習(xí)的時(shí)候我們就要注意不少的問題。下面我們就來看看具體的語(yǔ)言運(yùn)作環(huán)境如何才能滿足Java線程池相關(guān)程序的運(yùn)行。希望大家有所收獲。

無論是接收Runnable型參數(shù),還是接收Callable型參數(shù)的submit()方法,都會(huì)返回一個(gè)Future(也是一個(gè)接口)類型的對(duì)象。該對(duì)象中包含了任務(wù)的執(zhí)行情況以及結(jié)果。調(diào)用Future的boolean isDone()方法可以獲知任務(wù)是否執(zhí)行完畢;調(diào)用Object get()方法可以獲得任務(wù)執(zhí)行后的返回結(jié)果,如果此時(shí)任務(wù)還沒有執(zhí)行完,get()方法會(huì)保持等待,直到相應(yīng)的任務(wù)執(zhí)行完畢后,才會(huì)將結(jié)果返回。

我們用下面的一個(gè)例子來演示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());// 提交任務(wù)   
  7. Future fc = es.submit(new CallableTest());// 提交任務(wù)   
  8. // 取得返回值并輸出   
  9. System.out.println((String) fc.get());   
  10. // 檢查任務(wù)是否執(zhí)行完畢   
  11. if (fr.isDone()) {   
  12. System.out.println("執(zhí)行完畢-RunnableTest.run()");   
  13. } else {   
  14. System.out.println("未執(zhí)行完-RunnableTest.run()");   
  15. }   
  16. // 檢查任務(wù)是否執(zhí)行完畢   
  17. if (fc.isDone()) {   
  18. System.out.println("執(zhí)行完畢-CallableTest.run()");   
  19. } else {   
  20. System.out.println("未執(zhí)行完-CallableTest.run()");   
  21. }   
  22. // 停止線程池服務(wù)   
  23. es.shutdown();   
  24. }   
  25. }   
  26. class RunnableTest implements Runnable {   
  27. public void run() {   
  28. System.out.println("已經(jīng)執(zhí)行-RunnableTest.run()");   
  29. }   
  30. }   
  31. class CallableTest implements Callable {   
  32. public Object call() {   
  33. System.out.println("已經(jīng)執(zhí)行-CallableTest.call()");   
  34. return "返回值-CallableTest.call()";   
  35. }   
  36. }   
  37. import java.util.concurrent.*;  
  38. public class ExecutorTest {  
  39. public static void main(String[] args) throws 
    InterruptedException,  
  40. ExecutionException {  
  41. ExecutorService es = Executors.newSingleThreadExecutor();  
  42. Future fr = es.submit(new RunnableTest());// 提交任務(wù)  
  43. Future fc = es.submit(new CallableTest());// 提交任務(wù)  
  44. // 取得返回值并輸出  
  45. System.out.println((String) fc.get());  
  46. // 檢查任務(wù)是否執(zhí)行完畢  
  47. if (fr.isDone()) {  
  48. System.out.println("執(zhí)行完畢-RunnableTest.run()");  
  49. } else {  
  50. System.out.println("未執(zhí)行完-RunnableTest.run()");  
  51. }  
  52. // 檢查任務(wù)是否執(zhí)行完畢  
  53. if (fc.isDone()) {  
  54. System.out.println("執(zhí)行完畢-CallableTest.run()");  
  55. } else {  
  56. System.out.println("未執(zhí)行完-CallableTest.run()");  
  57. }  
  58. // 停止線程池服務(wù)  
  59. es.shutdown();  
  60. }  
  61. }  
  62. class RunnableTest implements Runnable {  
  63. public void run() {  
  64. System.out.println("已經(jīng)執(zhí)行-RunnableTest.run()");  
  65. }  
  66. }  
  67. class CallableTest implements Callable {  
  68. public Object call() {  
  69. System.out.println("已經(jīng)執(zhí)行-CallableTest.call()");  
  70. return "返回值-CallableTest.call()";  
  71. }  

 

運(yùn)行結(jié)果:

已經(jīng)執(zhí)行-RunnableTest.run()
已經(jīng)執(zhí)行-CallableTest.call()
返回值-CallableTest.call()
執(zhí)行完畢-RunnableTest.run()
執(zhí)行完畢-CallableTest.run()

使用完Java線程池后,需要調(diào)用它的shutdown()方法停止服務(wù),否則其中的所有線程都會(huì)保持運(yùn)行,程序不會(huì)退出。
 

【編輯推薦】

  1. 兩種JavaScript解析引擎性能對(duì)比談
  2. Python實(shí)現(xiàn)Java操作的“竅門”
  3. 深入理解Java的內(nèi)省與反射
  4. Python編程語(yǔ)言在Java中的使用效果
  5. Python編程語(yǔ)言與Java的技術(shù)比較
責(zé)任編輯:張浩 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2012-05-15 02:18:31

Java線程池

2021-09-11 15:26:23

Java多線程線程池

2015-08-20 09:17:36

Java線程池

2023-11-22 08:37:40

Java線程池

2020-09-04 10:29:47

Java線程池并發(fā)

2017-05-04 16:33:58

Java線程池實(shí)踐

2024-01-12 10:05:32

線程池代碼

2017-12-07 08:56:21

2021-11-15 10:50:52

Java線程池代碼

2012-02-29 13:26:20

Java

2010-03-18 15:15:08

Java線程池

2024-10-21 18:12:14

2010-03-15 16:56:16

Java線程池

2012-02-01 11:20:23

Java線程

2019-09-09 09:50:27

設(shè)置Java線程池

2021-07-16 11:35:20

Java線程池代碼

2013-06-08 13:07:23

Java線程池調(diào)度器

2020-11-25 11:33:47

Java線程技術(shù)

2013-05-23 15:59:00

線程池

2010-03-15 16:12:34

Python編程語(yǔ)言
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)