ast*_*nka 5 java multithreading event-handling
我有两个执行线程(比如Thread1和Thread2).Thread2正在侦听特定事件,并且当事件发生时,它想要停止执行Thread1并触发操作.完成操作后,需要从停止的位置继续执行Thread1.
我应该采用什么样的方法在Java中执行此操作?
干净的方法,恕我直言,是让Thread1定期轮询一些状态变量,看看是否有人要求暂停.如果它被要求暂停,那么它应该暂停执行,等待释放一些锁.
Thread2应该通过更改共享状态变量的值来要求Thread1暂停,然后等待Thread1接受暂停请求,然后执行其操作并释放Thread1正在等待的锁定.
简而言之,两个线程必须协作.我没有办法在没有合作的情况下干净地暂停一个线程.
您(当然)需要引用您想要停止的主题.你可以通过调用'suspend'方法暂停它:http://download.oracle.com/javase/6/docs/api/java/lang/Thread.html#suspend()在线程上.同样,您可以调用'resume'让线程再次运行.
但是,请注意,由于您不知道线程停止在哪里,因此极易出现死锁问题.
| 归档时间: |
|
| 查看次数: |
3664 次 |
| 最近记录: |