第一个问题:就是下面的代码,main线程和子线程是分别运行的~~!那么我让t1休眠,那么main(主)线程不应该是继续往下跑的吗? 那么为什么不会先打印出t2 的内容,然后再打印t1呢? 这样让我感觉,不过是t1或者t2休眠,都是主线程也休眠了!!第二个问题:主线程休眠的时候,子线程是不是还在运行?第三个问题:和第一个问题类似,就是把 t2.start(); 写在 t1.sleep(2000);后面,结果直接t1打印完了,等2秒打印出t2,我晕,这样不是停止了 主线程了嘛~~
请求高手帮忙~~ 小弟先谢谢了!!
ps。 在自学,网上的教程或者老师讲的,很多都没讲到这些东西吧~~!讲线程就介绍了 run() start() interrupt() sleep() wait() ... 等等介绍方法和用法就了事~~~ 想我这样的菜鸟有问题,只能这样来问了~~ 膜拜高手public class ceshi {
public static void main(String[] args) throws InterruptedException {
renwu r1 = new renwu("a");
Thread t1 = new Thread(r1);
renwu r2 = new renwu("b");
Thread t2 = new Thread(r2);
t1.start();
t2.start();
t1.sleep(2000);
//为什么这里会相当于停了主线程?
//t1线程本身没有停止?主线程停了。
//那么,这个Thread.currentThread().sleep(200);又有什么意义?
//t2.sleep(200);和t1的也就都没区别了,都是停主线程~~
}
}
class renwu implements Runnable {
private String name; renwu(String name) {
this.name = name;
} public void run() {
for (int i = 0; i < 20; i++) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.print(name + i + " ");
}
}
}
请求高手帮忙~~ 小弟先谢谢了!!
ps。 在自学,网上的教程或者老师讲的,很多都没讲到这些东西吧~~!讲线程就介绍了 run() start() interrupt() sleep() wait() ... 等等介绍方法和用法就了事~~~ 想我这样的菜鸟有问题,只能这样来问了~~ 膜拜高手public class ceshi {
public static void main(String[] args) throws InterruptedException {
renwu r1 = new renwu("a");
Thread t1 = new Thread(r1);
renwu r2 = new renwu("b");
Thread t2 = new Thread(r2);
t1.start();
t2.start();
t1.sleep(2000);
//为什么这里会相当于停了主线程?
//t1线程本身没有停止?主线程停了。
//那么,这个Thread.currentThread().sleep(200);又有什么意义?
//t2.sleep(200);和t1的也就都没区别了,都是停主线程~~
}
}
class renwu implements Runnable {
private String name; renwu(String name) {
this.name = name;
} public void run() {
for (int i = 0; i < 20; i++) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.print(name + i + " ");
}
}
}
t1.start();
t2.start();
t1.sleep(2000);
后面就没有代码了,感觉好像是main停止了似的,你把后面再添加点代码比如说输入了什么的在看看,这里相当于t1,t2,main线程三个同时进行
for(int i = 0; i < 200; i++){
System.out.println(Thread.currentThread().getName());}这样答案就很清楚了你也可以同时把这段代码写入下面的run方法中
那么你就更清楚了
他说得对,sleep是一个静态方法。The static method sleep(long) from the type Thread should be accessed in a static way
因为你先new的a,所以a先执行的几率比较高。