gpt4 book ai didi

java - 如何在两个线程之间共享对象(线程同步)?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:50:56 25 4
gpt4 key购买 nike

我有两个线程。一个将音频数据记录到变量中。另一个线程将该记录的变量发送到服务器。由于我是多线程新手,在并发方面我需要做什么?

下面是代码 fragment :

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);
}
}
});

最佳答案

为了尽量减少重新发明轮子,您可以将其实现为生产者/消费者同步。对于初学者:

http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/ArrayBlockingQueue.html

以防万一,这里有一些介绍性的东西:

http://en.wikipedia.org/wiki/Producer-consumer_problem

关于java - 如何在两个线程之间共享对象(线程同步)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13797951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com