当我在程序中启动一些线程时,其他一切都停止了。
这是我的线程代码......
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){
}
}
}
当我运行程序时,线程启动并且程序等待线程结束。我认为线程的要点是代码可以同时运行。有人可以帮我理解我做错了什么。
答案 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()
,您将跳过线程分配代码,并在当前线程中运行它。