我知道会话不是线程安全的.我的第一个问题是:将实体传递给另一个线程是安全的,做一些工作,然后将其传回原来的线程并进行更新.
public class Example1 { MyDao dao; ... public void doWork() { MyEntity entity = dao.getEntity(); Runnable job = new Job(entity); Thread t = new Thread(job); t.run(); t.join(); dao.merge(entity); } }
我的第二个问题是:在一个线程中新建一个实体并将其保存在另一个线程中是否安全?
public class Example2 { MyDao dao; ... public void doWork() { MyEntity entity = new Entity(); new Thread(new Job(dao,entity)).run(); } } public class Job implements Runnable { private MyDao dao; private MyEntity entity; ... @Override public void run() { dao.save(entity); } }
编辑我忘记提到这些实体是专门配置为急切加载