首页 > 其他 > 详细

关于Synchronized的用法

时间:2014-08-08 16:25:36      阅读:291      评论:0      收藏:0      [点我收藏+]

说到线程,大家都会想到同步问题。说到同步,就会想到Synchronized。

接下来,我跟大家分享一下我个人对Synchronized的用法理解。


先看看下面一个例子(在不用Synchronized之前) 输出0到5 三次

public class TestThread {

    public static void main(String args[]) {
        for(int i=0;i<3;i++){
         new    MyThread1().start();
    }
    }
}

class MyThread1 extends Thread {

    public  void run() {
            Param.instance().num();
    }
}


class Param {
    
    private static Param instance;
    public static Param instance() {
        if(instance==null){
            instance= new Param();
        }
        return instance;
    }
    
    public  void num() {
        for(int i=0;i<6;i++){
            System.out.print(i);
        }
        System.out.println();
    }


}


输出结果

000112132425
345
345


由此看出线程是交错运行的,结果导致输出错乱。这并不是我们要的结果。


我们试着在方法上 加上 Synchronized 以让其正常有序的打印


结果很出呼意料


00011122345
2345
345




本文出自 “spring研究者” 博客,请务必保留此出处http://springxml.blog.51cto.com/4900689/1537373

关于Synchronized的用法,布布扣,bubuko.com

关于Synchronized的用法

原文:http://springxml.blog.51cto.com/4900689/1537373

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!