1. 程式人生 > >執行緒池 submit 和 execute

執行緒池 submit 和 execute

 publicclass RunnableTestMain {

   
public staticvoid main(String[] args) {
        ExecutorService pool
= Executors.newFixedThreadPool(2);
       
       
/**
         * execute(Runnable x) 沒有返回值。可以執行任務,但無法判斷任務是否成功完成。
        
*/
        pool.execute(
new RunnableTest("Task1"));
       
       
/**
         * submit(Runnable x) 返回一個future。可以用這個future來判斷任務是否成功完成。請看下面:
        
*/
        Future future
= pool.submit(new RunnableTest("Task2"));
       
       
try {
           
if(future.get()==null){//如果Future's get返回null,任務完成                System.out.println("任務完成");
            }
        }
catch (InterruptedException e) {
        }
catch (ExecutionException e) {
           
//否則我們可以看看任務失敗的原因是什麼            System.out.println(e.getCause().getMessage());
        }

    }

}

public class RunnableTest implements Runnable {
   
   
private String taskName;
   
   
public RunnableTest(final String taskName) {
       
this.taskName = taskName;
    }

    @Override
   
public void run() {
        System.out.println(
"Inside "+taskName);
       
thrownew RuntimeException("RuntimeException from inside "+ taskName);
    }

}

相關推薦

執行submitexecute方法區別(類似callablerunnable)

執行緒池中的execute方法大家都不陌生,即開啟執行緒執行池中的任務。還有一個方法submit也可以做到,它的功能是提交指定的任務去執行並且返回Future物件,即執行的結果。下面簡要介紹一下兩者的三個區別: 1、接收的引數不一樣 2、submit有返回值,而execute沒有 用到返

執行 submit execute

 publicclass RunnableTestMain {     public staticvoid main(String[] args) {         ExecutorService pool = Executors.newFixedThreadPool(2

血的教訓--如何正確使用執行submitexecute方法

血的教訓之背景:使用執行緒池對存量資料進行遷移,但是總有一批資料遷移失敗,無異常日誌列印 凶案起因 ​ 聽說parallelStream並行流是個好東西,由於日常開發stream序列流的場景比較多,這次需要寫遷移程式剛好可以用得上,那還不趕緊拿來裝*一下,此時不裝更待何時。機智的我還知道在 JVM 的後臺

一心多用多執行-細談java執行submitexecute的區別

深夜學習,發現ThreadPoolExecutor裡面一個小知識點,故開熱點連wifi怒寫submit與execute方法的區別。 1.問題的來源 在看書的時候,涉及到java執行緒池問題的時候常常面臨這樣一個問題。當定義了一個Runnable物件想提交

SpringBoot 進階系列二 @EnableAsync@Async 執行定義使用

在spring傳統自定義執行緒池,是在xml配置檔案中進行配置如: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:

java執行ThreadPoolExecutor阻塞佇列BlockingQueue,Executor, ExecutorService

ThreadPoolExecutor 引數最全的建構函式 public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize,

執行建立執行等待

在部落格園看到一篇部落格 C# -- 使用執行緒池 ThreadPool 執行多執行緒任務 在這裡使用了執行緒池 雖然也實現了執行緒等待 但是執行緒等待實現的太死板  如果定義未知數量的執行緒池無法實現等待 ManualResetEvent數量已經定死 所

執行-isShutdownisTerminated

1.執行緒池 isShutdown和isTerminated的區別 isShutDown當呼叫shutdown()方法後返回為true。 isTerminated當呼叫shutdown()方法後,並

Springmvc執行配置使用

1.Springmvc執行緒池配置: 在spring上下文檔案ApplicationContext.xml中新增 <!-- 執行緒池配置 --> <bean id="threadPool" class="org.springframework.sch

Java執行原理使用

為什麼要用執行緒池? 諸如 Web 伺服器、資料庫伺服器、檔案伺服器或郵件伺服器之類的許多伺服器應用程式都面向處理來自某些遠端來源的大量短小的任務。請求以某種方式到達伺服器,這種方式可能是通過網路協議(例如 HTTP、FTP 或 POP)、通過 JMS 佇列或者可能通過

Java 執行原理佇列詳解

http://blog.csdn.net/xx326664162/article/details/51701508 執行緒池的框架圖: 1、Executor任務提交介面與Executors工具類 Executor框架同Java.util.

執行續:你必須要知道的執行submit()實現原理之FutureTask!

![FutureTask思維導圖.png](https://img2020.cnblogs.com/other/799093/202006/799093-20200601101441232-1248184493.png) ### 前言 上一篇內容寫了`Java`中執行緒池的實現原理及原始碼分析,說好的是實

執行執行理解使用總結

建立和銷燬執行緒非常損耗效能,那有沒有可能複用一些已經被建立好的執行緒呢?答案是肯定的,那就是執行緒池。 另外,執行緒的建立需要開闢虛擬機器棧、本地方法棧、程式計數器等執行緒私有的記憶體空間,線上程銷燬時需要回收這些系統資源,頻繁地建立銷燬執行緒會浪費大量資源,而通過複用已有執行緒可以更好地管理和協調執行緒的

Java執行submit()execute之間的區別?

一: submit()方法,可以提供Future < T > 型別的返回值。 executor()方法,無返回值。 execute無返回值 public void execute(Runnable command) { if (command == null)

執行submitexecute方法區別

執行緒池中的execute方法大家都不陌生,即開啟執行緒執行池中的任務。還有一個方法submit也可以做到,它的功能是提交指定的任務去執行並且返回Future物件,即執行的結果。下面簡要介紹一下兩者的三個區別: 1、接收的引數不一樣 2、submit有返回值,而exe

執行execute/submit差異

1、無返回值:execute ExecutorService fixedThreadPool = Executors.newFixedThreadPool(3); for (int i = 0; i < 30; i++) {     final int fin

執行的異常捕獲與執行的異常捕獲 executesubmit區別

https://www.cnblogs.com/wscit/p/6100476.html#(單執行緒情況)對於單執行緒來說,只需要重寫UncaughtException就好了,如下:123456789/*** Author: scw* Time: 16-11-24*/publ

執行ExecutorService中submitexecute區別

介紹submit和execute都是 ExecutorService 的方法,都是新增執行緒到執行緒池中。區別 submit 有返回值 返回future , execute沒有submit 返回值 fu

JAVA多執行(三) 執行鎖的深度化

 github演示程式碼地址:https://github.com/showkawa/springBoot_2017/tree/master/spb-demo/src/main/java/com/kawa/thread 1.執行緒池  1.1 執行緒池是什麼 Java中的執行緒

java執行(有返回值無返回值)

無返回值: package ThreadPool2; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class test { public stat