我有兩個線程。一個將音頻數據記錄到變量中。另一個線程將記錄的變量發送到服務器。由於我是多線程新手,因此在併發方面我需要做什麼?如何在兩個線程之間共享對象(線程同步)?
下面的代碼片段:
short[] sData = new short[1024];
recordingThread = new Thread(new Runnable() {
public void run() {
android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_URGENT_AUDIO);
while (isRecording) {
recorder.read(sData, 0, BufferElements2Rec);
}
}
}, "AudioRecorder Thread");
recordingThread.start();
而另一個線程正在接入同一SDATA並將其發送到服務器:
Thread sendThread= new Thread(new Runnable() {
public void run() {
android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_URGENT_AUDIO);
while (true) {
try {
ByteBuffer.wrap(bData).order(ByteOrder.LITTLE_ENDIAN)
.asShortBuffer().put(sData);
}
}
});
你可能會將你的數組標記爲'最終靜態' – waqaslam
應該使用Android上的AsyncTask: –
@AndersMetnik通過使用AsyncTask需要更多的延遲。它的作品像1request = 1response。 –