package com.a;public class a {
public static void main(String[] args) {
System.out.println("11111111111111");

                boolean bl = ad();//这里卡住了。
System.out.println(bl + ""); System.out.println("22222222222222");
}

public static boolean ad(){
boolean bl = isbl("aaaa");//这里就会卡住了。
if(bl){
    return false;
                }else{
         return true;
                }
}

    public static boolean isbl(String s){
     //这里是耗时操作,大概5~10秒
    }
}上面的输出结果:
11111111111111
false
22222222222222
我要的输出结果:
11111111111111
22222222222222
false----------
请问高手应该怎么做啊?请高手详细说一下。

解决方案 »

  1.   

    这个简单啊! 把下面3句顺序改一下.
                    
            boolean bl = ad();//这里卡住了。
            System.out.println(bl + "");        System.out.println("22222222222222");改成:
            boolean bl = ad();//这里卡住了。
            System.out.println("22222222222222");
            System.out.println(bl + "");另外,按规范讲,类名首字母要大写. 把代码放在java 代码框里,更易读。
      

  2.   

    你这是单线程。不可能输出你要的结果,给你改了个多线程的执行,你学下public class T
    {
    public static void main(String[] args)
    {
    boolean b1 = false;
    new Thread(new PrintThread(b1 + "", 500)).start(); //这个线程最早开始但是休眠500毫秒所以最后输出
    new Thread(new PrintThread("22222222222222", 200)).start(); //这个线程第二开始但是休眠200毫秒
    new Thread(new PrintThread("11111111111111", 0)).start(); //这个虽然最后执行但是没有休眠所以最早输出
    }
    }class PrintThread implements Runnable //要实现多线程必须实现这个接口并实现run()方法
    {
    String print;
    int sleepTime;
    public PrintThread(String print,int sleepTime) {
    this.print = print;
    this.sleepTime = sleepTime;
    }

    public void run() //这个就是各个线程具体执行内容
    {
    try {
    Thread.sleep(sleepTime);  //会抛出异常必须捕获
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    System.out.println(this.print);
    }
    }