Java,主代码在线程启动时停止

时间:2012-05-07 15:03:15

标签: java multithreading

当我在程序中启动一些线程时,其他一切都停止了。

这是我的线程代码......

static Thread b1 = new Thread(new Builders());
b1.run();
System.out.println("done");

这是班级Builders

public class Builders implements Runnable {

    static boolean busy=false;
    Random r = new Random();

    public void run() {
        try{
            busy=true;
            System.out.println("ready");
            Thread.sleep(9999);
            busy=false;
            System.out.println("done");
        }
        catch(Exception e){
        }
    }
}

当我运行程序时,线程启动并且程序等待线程结束。我认为线程的要点是代码可以同时运行。有人可以帮我理解我做错了什么。

3 个答案:

答案 0 :(得分:8)

这是因为线程是以start()启动的,而不是run(),它只是在当前线程上调用run方法。所以它应该是:

static Thread b1 = new Thread(new Builders());
b1.start();
System.out.println("done");

答案 1 :(得分:2)

这是因为你没有启动一个线程 - 而是通过调用run()来执行线程的代码同步;你需要打电话给start()

更好的是,你应该使用executors

答案 2 :(得分:1)

您需要调用start()方法。 Thread的内部代码将启动一个调用run()方法的新操作系统线程。通过自己调用run(),您将跳过线程分配代码,并在当前线程中运行它。