A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

public class Test2 {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                //Tese1 tes=new Tese1();
                //tes.start();
        //tes.run();
                Tese2 ts2=new Tese2();
                Thread t=new Thread(ts2);
                Thread t1=new Thread(ts2);
                Thread t2=new Thread(ts2);
                Thread t3=new Thread(ts2);
                t.start();
                t1.start();
                t2.start();
                t3.start();
               

        }

}
class Tese2 implements Runnable{
    private int num=100;
        @Override
        public synchronized void run() {
                // TODO Auto-generated method stub
                Object obj=new Object();
                while (true) {
                        synchronized (obj) {
                                if (num>0) {
                                        try {
                                                Thread.sleep(10);
                                        } catch (Exception e) {
                                                // TODO: handle exception
                                        }
                                        System.out.println(Thread.currentThread().getName()+"--"+num--);
                                }
                               
                                }
                        }
               
                }
        }
        就是不怎么明白,这段代码的执行原理,只是照着敲了一遍。

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1 很给力!

查看全部评分

5 个回复

倒序浏览
{:2_35:}Synchronized() 是一个锁,就像你家的门一样 就一把锁 在你手里 你就是那个拿着锁的线程  你拿着锁 开门进家了 外面的人没有锁怎么进去?  你进家里洗了澡出去了 把锁给别人 跟别人说 我洗好了 到你了 锁的钥匙给你 你进去  然后另一个人就进去了 门又关上了 或者你出来后还想再洗一次 那你就有进去把们关上了

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1 很给力!

查看全部评分

回复 使用道具 举报
因为存在synchronized,在synchronized代码块中的语句,只能进去一个线程执行,只要进去的线程执行不完,别的线程就不能进去执行

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1 你很活跃哦

查看全部评分

回复 使用道具 举报
林吉前 发表于 2015-4-1 12:14
Synchronized() 是一个锁,就像你家的门一样 就一把锁 在你手里 你就是那个拿着锁的线程  你拿着锁 ...

{:2_35:}就是那么个意思了 锁跟钥匙有点分不清 理解成反锁门好了 那种进去就有个插销的洗手间? 去过吧 公共厕所 进去以后到里面把们反锁上 上好厕所 把插销一拔又出来了 然后别人才可以上 或者你自己还想再上一次 又进去把插销插上。。。别人又进不去了 只能在外面等着
回复 使用道具 举报
呵呵!楼上说的都对!Synchronized所定义的为同步代码块,理解“同步”就是一个一个来。
回复 使用道具 举报
同步了啊,为了防止共享数据出错,实现同步的方法就是一条一条的执行线程,这也是它的局限性
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马