| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 947 人关注过本帖
标题:线程的问题
只看楼主 加入收藏
cheshou
Rank: 1
等 级:新手上路
帖 子:17
专家分:5
注 册:2009-8-3
结帖率:50%
收藏
已结贴  问题点数:0 回复次数:3 
线程的问题
学习线程了,可是很不理解,高手请指点
public class TextDeadLock implements Runnable{
    public  void add(int x,int y){
      synchronized(this){
        int z=x+y;
        System.out.println(z);
        }
    }
   
   
   


    /**
    * @param args
     * @throws InterruptedException
    */
    public static void main(String[] args) throws InterruptedException {
    // TODO Auto-generated method stub
    TextDeadLock td1 = new TextDeadLock();

    Thread t1 = new Thread(td1);
    Thread t2 = new Thread(td1);
    t1.start();
    t2.start();
    }

    public void run() {
     
        add(10,20);   
    }
    }

这是同一个对象在不同的线程里运行的吧,这时候不应该先获得对象锁的才能调用方法吗,可是运行后事两个一起出来的,是我理解错误吧。
搜索更多相关主题的帖子: 线程 
2009-11-18 19:26
z68752553
Rank: 1
等 级:新手上路
帖 子:41
专家分:5
注 册:2009-1-20
收藏
得分:5 
对synchronized(this)的一些理解
  一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。
  二、然而,当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块。
  三、尤其关键的是,当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有其它synchronized(this)同步代码块的访问将被阻塞。
  四、第三个例子同样适用其它同步代码块。也就是说,当一个线程访问object的一个synchronized(this)同步代码块时,它就获得了这个object的对象锁。结果,其它线程对该object对象所有同步代码部分的访问都被暂时阻塞。
  五、以上规则对其它对象锁同样适用

可能是CUP的处理速度太快了肉眼分辨不出来,你看看那加入一个较长的FOR 循环看看。
2009-11-22 19:45
沉墨小菜鸟
Rank: 2
等 级:论坛游民
帖 子:16
专家分:26
注 册:2009-11-23
收藏
得分:0 
你可以设一个运行的时间
2009-11-25 22:51
yusvse
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-04-27 15:42
快速回复:线程的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017911 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved