第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

新開一個線程事務怎么控制?

新開一個線程事務怎么控制?

Qyouu 2019-02-19 08:38:09
在run方法里沒法用@Transactional來做事務,run方法上又不能加exception,怎么能控制事務保證異常就回滾呢?
查看完整描述

4 回答

?
ITMISS

TA貢獻1871條經驗 獲得超8個贊

run方法里調service方法。

查看完整回答
反對 回復 2019-03-01
?
千巷貓影

TA貢獻1829條經驗 獲得超7個贊

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并發(fā)編程中的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。

查看完整回答
反對 回復 2019-03-01
  • 4 回答
  • 0 關注
  • 1178 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號