通过线程锁定对资源的访问

时间:2011-03-07 21:27:24

标签: android multithreading resources thread-safety

我有一个应用程序,其中记录音频文件。 用户可以指定录制的音频长度,样本数量和录制时间。 例如:

length   = 3 sec
samples  = 2
interval = 5 sec

当应用程序启动时,它会创建一个线程,等待5秒并创建第二个线程。

第一个线程将3秒样本记录到指定目录。

2秒后,下一个线程开始记录第二个样本。 它可以工作并创建两个文件:sample1.3gp,sample2.3gp。

但是当用户指定:

length   = 3 sec
samples  = 2
interval = 1 sec
由于第二个线程在第一个线程仍在使用时尝试访问介质记录器,因此无法进行录制。

我希望能够为该资源设置一些锁定。我的意思是什么?

当第一个线程开始3秒录制时,1秒后第二个线程也会尝试录制。

但它应该等待接下来的两秒钟,直到第一个线程完成它的工作。

解决这个问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

我建议你阅读一般的线程和互斥。 Read this SO question first并且可能会改进你的要求。

这不是Android特定的问题,而是更多关于使用Java进行线程化的问题。