3

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

这是我的线程代码...

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){
        }
    }
}

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

4

3 回答 3

8

那是因为线程以start(), not开头run(),它只是调用run当前线程上的方法。所以应该是:

static Thread b1 = new Thread(new Builders());
b1.start();
System.out.println("done");
于 2012-05-07T15:04:24.037 回答
2

这是因为您没有启动线程 - 相反,您正在通过调用同步run()执行线程的代码; 你需要打电话start()

更好的是,您应该使用executors

于 2012-05-07T15:05:09.513 回答
1

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

于 2012-05-07T15:09:08.447 回答