扫码关注官方订阅号
ringa_lee
run方法里调service方法。
run
service
写个函数就可以加@Transactional和抛出Exception了
ExecutorService executorService = Executors.newSingleThreadExecutor(); Future<Object> future = executorService.submit(new Callable<Object>() { @Override public Object call() throws Exception { // return results return null; } }); // get results future.get();
concurrent
api
final Lock lock = new ReentrantLock(); final Condition condition = lock.newCondition(); final AtomicReference<Object> results = new AtomicReference<>(); Thread t = new Thread() { @Override public void run() { try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } lock.lock(); // set results results.set("success"); condition.signalAll(); lock.unlock(); } }; t.start(); lock.lock(); condition.await(); // get results System.out.println(results.get()); lock.unlock();
普通线程也可以使用上述方式模拟线程的返回值,来决定事务的commit/rollback。
commit/rollback
具体业务做的时候最好调用外部方法
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
run方法里调service方法。写个函数就可以加@Transactional和抛出Exception了
通过
concurrent并发编程中的api可以拿到线程的返回值。普通线程也可以使用上述方式模拟线程的返回值,来决定事务的
commit/rollback。具体业务做的时候最好调用外部方法