现在遇到一个麻烦的事情如果 a 线程 启动了  1-9号分线程,由于1-9号分线程要读共同的内存块,用到了线程同步wait,但是现在出现一个严重的问题,就是如果1-9号线程序wait次数过于平凡的话,主线程a就好像不工作了,我现在想问一下,怎么才能实现不管1-9号线程怎么wait 都不会影响a线程的正常运行吗?谢谢

解决方案 »

  1.   

    Thread-Per_messagepublic class MyThread{
    public static void main(String[] args){
    System.out.println("main BEGIN");
    Host host = new Host();
    host.request(10,'A');
    host.request(20,'B');
    host.request(30,'C');
    System.out.println("main END");
    }
    }
    class Helper{
    public void handle(int count,char c){
    System.out.println("       handle("+","+c+") BEGIN");
    for(int i=0;i<count;i++){
    slowly();
    System.out.print(c);
    }
    System.out.println("");
    System.out.println("       handle("+count+","+c+") END");
    }
    private void slowly(){
    try{
    Thread.sleep(100);
    }
    catch(InterruptedException e){

    }
    }
    }
    class Host{
    private final Helper helper = new Helper();
    public void request(final int count,final char c){
    System.out.println("       request("+count+","+c+") BEGIN");
    new Thread(){
    public void run(){
    helper.handle(count,c);
    }
    }.start();
    System.out.println("       request("+count+","+c+") END");
    }
    }
      

  2.   

    可以将主线程的优先级设成最高
    a.setPriority(9);
      

  3.   

    就是如果1-9号线程序wait次数过于平凡的话,主线程a就好像不工作了,不太明白楼主的意思,1-9线程wait和a线程有何关系,只有1-9 wait, a才有运行权,a可以notifyAll后进入wait, 本来就是这样啊
      

  4.   

    >>就是如果1-9号线程序wait次数过于平凡的话,主线程a就好像不工作了什么意思?你用wait/notify是锁定哪个对象实例的?a和1-9都参与争夺lock么?