Java android中线程自动进入等待状态

Java android中线程自动进入等待状态,java,android,multithreading,Java,Android,Multithreading,我正在安卓系统中启动一个新线程。该线程的作用是从MediaCodec获取输出缓冲区,然后将其作为flv视频流传输到web浏览。我的问题是,在流式传输一些视频后,后台线程会自动进入等待状态。我可以在android显示器上看到这一点。以下是Android监视器中线程的日志: at java.lang.Object.wait(Native Method) at java.lang.Thread.parkFor(Thread.java:1205) at sun.misc.Unsafe

我正在安卓系统中启动一个新线程。该线程的作用是从MediaCodec获取输出缓冲区,然后将其作为flv视频流传输到web浏览。我的问题是,在流式传输一些视频后,后台线程会自动进入等待状态。我可以在android显示器上看到这一点。以下是Android监视器中线程的日志:

  at java.lang.Object.wait(Native Method)   
  at java.lang.Thread.parkFor(Thread.java:1205) 
  at sun.misc.Unsafe.park(Unsafe.java:325)  
  at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)  
  at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:813)   
  at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:973)    
  at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1281) 
  at java.util.concurrent.Semaphore.acquire(Semaphore.java:283) 
  at com.koushikdutta.async.AsyncServer.run(AsyncServer.java:190)   
  at in.umairkhan.screencast.cast.FlashDevice$Streamer.encode(FlashDevice.java:86)  
  at in.umairkhan.screencast.cast.EncoderDevice$EncoderRunnable.run(EncoderDevice.java:55)  
  at java.lang.Thread.run(Thread.java:841)  
线程进入等待状态的可能原因是什么

编辑: 我只是以正常的方式创建线程。创建一个对象并调用该对象上的start函数。该线程的对象立即超出范围。我不可能显式地让线程进入等待状态。顺便说一句,我正在做一些关于背景线程的深入研究。我只想问线程进入等待状态的原因是什么


我一次又一次地调用这个方法:并传递runnable的对象。告诉您run方法中的第一个if条件始终为false。我认为代码的其余部分在某种程度上阻塞了代码。

如果您可以获得thread对象,请尝试使用thread.setPriority()来设置较低的优先级。通过这种方式,您将发现它是否由于另一个线程阻塞而进入等待模式,根据堆栈跟踪,
com.koushikdutta.async.AsyncServer.run
正在调用
java.util.concurrent.Semaphore.acquire
,它正在阻塞信号量。线程正在等待另一个线程释放信号量


Dalvik
WAIT
线程状态实际上是一个调用了
Object.WAIT()
的线程。有关完整的线程状态参考,请参阅。

对不起,什么是android监视器?它显示您的android设备的细节,例如线程运行的内容,你的应用程序的堆大小,是的,还有logcat和很多其他我不知道的东西。是com.koushikdutta.async.AsyncServer。运行你编写的类吗?发布一些包含线程和流读取的代码。我正在使用开源库在我的android设备上创建服务器。这是AsyncServer类: