黑马程序员技术交流社区
标题:
多线程的简单问题。
[打印本页]
作者:
张榆
时间:
2012-10-2 08:38
标题:
多线程的简单问题。
class Test implements Runnable {
public synchronized void run() {
while (true) {
System.out.println(Thread.currentThread().getName() + ".....");
}
}
}
public class TestDemo {
public static void main(String[] args) {
Test t = new Test();
Thread t1 = new Thread(t);
Thread t2 = new Thread(t);
t1.start();
t2.start();
//为什么只看到0号线程了。。。
}
}
作者:
高照
时间:
2012-10-2 09:13
public synchronized void run() { //因为你在这加了锁,当一个线程调用run方法后,
//就进入while无限循环,就不会释放锁
//另一个线程自然无法调用run方法,所以只显示
//一个线程
while (true) {
System.out.println(Thread.currentThread().getName() + ".....");
}
}
作者:
邱成
时间:
2012-10-2 09:27
class Test implements Runnable {
//你在这加了同步,所以只有一个线程在调用run()方法
public synchronized void run() {
while (true) {
//在这里while一直循环执行下去,run方法无法结束,所以只能打印一个线程
System.out.println(Thread.currentThread().getName() + ".....");
//可以再这里加入一个break;
}
}
}
public class TestDemo {
public static void main(String[] args) {
Test t = new Test();
Thread t1 = new Thread(t);
Thread t2 = new Thread(t);
t1.start();
t2.start();
//为什么只看到0号线程了。。。
}
}
作者:
夏天
时间:
2012-10-2 09:28
其实关于同步。你肯定是和老师卖的售票例子弄混了。
你要知道,同步是同步的哪
public synchronized void run() {
//同步不应该同步的run方法,而是 while 里面的多条语句
while (true) {
System.out.println(Thread.currentThread().getName() + ".....");
}
}
作者:
古银平
时间:
2012-10-2 10:16
要看到1线程,那就让0线程先释放执行权一会,同时也释放锁一会,那么1线程就能执行了!
作者:
刘 佳
时间:
2012-10-2 11:32
因为Test类里面的run方法是无限循环,而它又加了同步状态,所以当线程t1启动时,它会进入到方法中无限循环不会释放锁,t2进不去。所以执行的会一直是一个线程。
作者:
黑马-王燚
时间:
2012-10-2 12:16
你这个代码不是 加了 synchronized 么,既然你给其上锁了,然后你又没有将其释放,t1就一直占用着它了,t2自然进不来的,所以只会输出0号线程了。。。。
作者:
杨华东
时间:
2012-10-2 13:51
class Test implements Runnable {
public synchronized void run() {
while (true) {//
有两种解决方案:1,把while(true){}循环结构去掉。2,不去除循环,但在再循环内加入跳转语句如:break即可。
System.out.println(Thread.currentThread().getName() + ".....");
}
}
}
public class TestDemo {
public static void main(String[] args) {
Test t = new Test();
Thread t1 = new Thread(t);
Thread t2 = new Thread(t);
t1.start();
t2.start();
//为什么只看到0号线程了。。。
}
}
作者:
何小红
时间:
2012-10-2 15:52
张瑜,你进黑马了没
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2