專案需求:安卓要求連接云資料庫必須重開一個子執行緒,于是涉及到子執行緒中查詢資料的回傳,
代碼:
private void findCourse() {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
MySQLUtil mySQLUtil = new MySQLUtil();
mySQLUtil.getConnection("cce-18");
course = mySQLUtil.getCourseName("course_info_2018_2019");
}
});
thread.start();
try {
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
??在findCourse中,我們新開了一個子執行緒,其中course是我們需要回傳的資料,如果我們正常運行會發現:在我們需要使用course時它還是一個null,因為主執行緒同時也在進行,子執行緒還沒運行到對course初始化這句話時,我們就在使用course了,因此我們必須等子執行緒運行結束course有值之后才繼續運行主執行緒,有兩個解決辦法:
- sleep函式,這種方法不推薦,因為我們并不知道子執行緒什么時候結束,延時太久的話是對資源的一種浪費,
- join()函式,join()是等待呼叫此方法的執行緒結束,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/89327.html
標籤:其他
上一篇:EpicGames 喜加三 !《看門狗2》《足球經理》等三款游戲限時領取
下一篇:求助大佬
