簡體   English   中英

如何在Spring中將dao對象發送到新線程

[英]How to send dao object to new thread in Spring

我有一些經理,我有userDao ,由設置

@Autowired
public void setUserDao(UserDao userDao) {
    this.userDao = userDao;
}

我想在管理器中啟動新線程並在構造函數中傳遞此dao。 像這樣:

new MyThread(userDao).start();

這樣安全嗎? 還是可能的? 如果不是,我該怎么做?

謝謝你的回復。

創建一個接受DAO作為參數的函數。 使用@Aysnc注釋該函數

調用函數時請記住以下內容:

  • 當您從同一個類中調用Async注釋函數時,調用將是同步的(這與代理對象有關)
  • 異步方法不會與調用者一起參與相同的事務上下文

這種方法鼓勵您考慮您的班級結構,並鼓勵您。 例如,在失敗的情況下,您可能還想用@Retryable包裝它。

當然,你也做了類似的事情

ExecutorService executorService = Executors.newFixedThreadPool(3);
MyWorker worker = new MyWorker(UserDao userDao);
executorService.submit(worker);

private class MyWorker implements Callable {
    private UserDao userDao 
    MyWorker(UserDao userDao){
        this.userDao = userDao;
    }

    public void call() {
        .. do something
    }
}

但那是更多的代碼。

暫無
暫無

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

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