synchronized的问题

来源:百度知道 编辑:UC知道 时间:2024/07/05 02:37:46
根据孙鑫老师的教程用 new Thread(cp).start();
new Thread(cp).start();
成功的创建了两个线程,能够同时执行。但是把临界区的代码放到synchronized同步块(放到同步方法中也一样)中,就只有一个线程在执行,另一个线程就没反应?怎么回事?
代码如下:
public class ThreadTest {
public static void main(String[] args) {
ChePiao cp=new ChePiao();
new Thread(cp).start();
new Thread(cp).start();
}
}

class ChePiao implements Runnable{
int i=100;

public void run(){
synchronized(this){
while (i>0){
try{
Thread.sleep(10);

}
catch(Exception e){
e.toString();
}
System.out.println(Thread.currentThread().getName()+"的"+i);
i--;
}
}
}
}
---------------------------------------------------------------
---------------------------------------------------------------
while (i>0){
try{
Thread.sleep(10);

}
catch(Exception e){

恩 这个 你还是对 synchronized 的原理不太清楚。简单的说 某个对象在执行声明为synchronized的方法,那么这个方法中的数据就会被“锁定”,其他对象或者线程就无法访问了。 这就是你的代码出现问题的原因
http://baike.baidu.com/view/1207212.htm

建议你去 孙鑫老师 个人的论坛 或网站上 发这些内容 我相信他会帮你解答的 因为我总在那个网站上溜达! 真的挺不错 论坛里还提供书、视频的下载呢 之后 还能得到孙鑫老师的亲自解答!

你知道synchronized是什么意思吗?不知道的话好好研究下~

应该没问题的啊