1. 使用條件變量
判斷是否任務B已經做完,然后再執行任務A。
測試代碼可看:https://blog.csdn.net/guochao6531/article/details/78075882
2. 使用CountDownLatch。CountDownLatch其實可以把它看作一個計數器,只不過這個計數器的操作是原子操作,同時只能有一個線程去操作這個計數器,也就是同時只能有一個線程去減這個計數器里面的值。你可以向CountDownLatch對象設置一個初始的數字作為計數值,任何調用這個對象上的await()方法都會阻塞,直到這個計數器的計數值被其他的線程減為0為止。
測試代碼可看:https://zapldy.iteye.com/blog/746458
3. 使用join()方法。join()方法使得一個線程等待另外一個線程結束后再執行。例如,一個GUI (或者其他線程)使用join()方法等待一個子線程執行完畢:CompleteCalcThread t = new CompleteCalcThread();