private void processA() {
} private void processB() {
}

private class ProcessThreadA extends Thread {
public void run() {

}
}
private class ProcessThreadB extends Thread {
public void run() {

}
}
线程A调用processA()方法,线程B调用processB()方法。
执行过程是这样的:当线程A未处理完毕时,线程B需要等待;线程B在处理时,如果线程A开始运行了,则强制中断线程B;当processA()在被一个线程调用时,其他线程再调用这个方法时,需要等待前一个线程处理完毕才能执行;当processB()在被一个线程调用时,其他线程再调用这个方法时,需要等待前一个线程处理完毕才能执行。叙述的可能不是太清楚,有1条最主要的原则就是:当有新的ProcessThreadA线程运行起来时,其它的A、B线程都要中止,当有新的ProcessThreadB线程运行起来时,需要等待前面所有的A、B线程处理完后才执行。先给50分,如果能解决的话肯定会加更多得分的,谢谢各位了。

解决方案 »

  1.   

    可以在processA和processB前加同步锁,然后在ProcessThreadB 的run方法的第一句判断一下是否有ProcessThreadA 的对象在运行,若有,则中断之
      

  2.   

    怎么判断是否有ProcessThreadA的对象运行呢?
      

  3.   

    在建立一个线程,此线程就是一个作用,那就是它标识着现在都有谁在运行着,每个线程如果想要运行,都要访问此线程,看是否允许自己运行,要想知道是否有ProcessThreadA的对象运行,就可以访问那个线程,就能知道了;你看这样是否行吗?呵呵……
      

  4.   

    用优先级吧,
    把ProcessThreadA的优先级调高setPriority(6)
    这样就可以了