我有一位经理,我有userDao
,由
@Autowired
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
我想在管理器中启动新线程并在构造函数中传递此dao。 像这样:
new MyThread(userDao).start();
安全吗?还是可能的?如果不是,我该怎么做?
感谢您的回复。
答案 0 :(得分:0)
创建一个接受DAO作为参数的函数。使用@Aysnc
注释函数调用该函数时请记住以下内容:
这种方法鼓励你思考你的班级结构,并鼓励你。例如,在失败的情况下,您可能还想用@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
}
}
但这是更多的代码。