[英]How to wait for thread to finished in android?
如何等待線程完成以啟動依賴於 android 中先前線程的新線程?
考慮到我有 2 個線程 thread1 和 thread2。 在thread1中,我在socket上執行了寫任務,在thread2中,我在socket上執行了讀取任務。 在套接字上寫入后,我必須等待一段時間,因為客戶端需要處理數據並在啟動讀取過程后回復。 那么如何保證socket上的寫是完整的,socket上的讀是完整的。
這是我使用的線程代碼,
class Thread1 implements Runnable {
@Override
public void run() {
try {
socket = new Socket(SERVER_IP, SERVER_PORT);
output = socket.getOutputStream();
input = socket.getInputStream();
runOnUiThread(new Runnable() {
@Override
public void run() {
//tvMessage.setText("Connected\n");
Toast.makeText(MainActivity.this, "Connected", Toast.LENGTH_LONG).show();
}
});
} catch (UnknownHostException e1) {
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
class Write_Thread implements Runnable {
@Override
public void run() {
try {
output.write(output_array,0,data_length);
} catch (UnknownHostException e1) {
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
class Read_Thread implements Runnable {
@Override
public void run() {
while (true) {
try {
rec_count = input.read(input_array);
} catch (UnknownHostException e1) {
e1.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
}
}
}
我在按鈕的 onclick 監聽器中調用那些讀寫線程。
您可以閱讀有關 join() 的信息。 或者您可以在寫入完成時調用回調 function 並將此回調 function 傳遞給寫入數據的第一個線程。
像這樣的東西
class WritingThread extends Thread {
private OnWritingCompleted callback;
public WritingThread(OnWritingCompleted callback){
this.callback = callback;
}
}
interface OnWritingCompleted {
void onCompleted()
}
您可以像這樣將這個回調 function 傳遞到所需的位置
new WritingThread(new OnWritingCompleted {
override void onCompleted() {
// start reading thread here
}
})
當寫作完成時就這樣做
callback.onCompleted()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.