簡體   English   中英

從線程池執行程序在線程上設置超時

[英]Set timeout on a thread from thread pool executor

問題本身就說明了一切。 我知道如何創建線程池執行程序並在給定的線程池執行程序上啟動異步,但是我想知道有什么方法可以為不同的線程設置不同的超時時間嗎?

范例:

@Async("thread pool executor") Func1

@Async("thread pool executor") Func2

如果是,我該如何實現?

我希望第一個時間為7秒,第二個時間為1秒。

有一種方法可以在Future對象上設置時間,但不能在ThreadPool上設置時間,但是您不能在線程級別設置時間,但仍然可以在任務級別設置時間(因為不能保證哪個線程將執行任務) )

@Async("someExecutor")
public Future<String> asyncService() {

    return CompletableFuture.completedFuture("start").thenApply(s->{

    System.out.println(Thread.currentThread().getName()+" - "+Thread.currentThread().getThreadGroup());
        return "hello";
    });     
}

獲得Future

Future<String> result = asyncService.asyncService();
    result.get(3, TimeUnit.SECONDS);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM