码迷,mamicode.com
首页 > 其他好文 > 详细

关于Synchronized的用法

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

标签:线程 同步 synchronized

说到线程,大家都会想到同步问题。说到同步,就会想到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的用法

标签:线程 同步 synchronized

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!