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

转载于:https://blog.51cto.com/springxml/1537373

关于Synchronized的用法相关推荐

  1. java synchronized 使用_Java中Synchronized的用法

    synchronized是Java中的关键字,是一种同步锁.它修饰的对象有以下几种: 1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码 ...

  2. Java中Synchronized的用法

    原文:http://blog.csdn.net/luoweifu/article/details/46613015 <编程思想之多线程与多进程(1)--以操作系统的角度述说线程与进程>一文 ...

  3. Java 多线程:synchronized 关键字用法(修饰类,方法,静态方法,代码块)

    前言 在 多线程生成的原因(Java内存模型与i++操作解析) 中,介绍了Java的内存模型,从而可能导致的多线程问题.synchronized就是避免这个问题的解决方法之一.除了 synchroni ...

  4. Java线程中关于Synchronized的用法

    synchronized是Java中的关键字,是一种同步锁.它修饰的对象有以下几种:  1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代 ...

  5. 从不同步的代码块中调用了对象同步方法。_Java中Synchronized的用法

    Java中,synchronized关键字是用来控制线程同步的,就是在多线程的环境下,控制synchronized代码段不被多个线程同时执行.拉勾IT课小编为大家分析. synchronized是Ja ...

  6. synchronized解释用法及原理

    转自:HollisChuang's Blog synchronized synchronized的用法 synchronized的实现原理 synchronized与原子性 synchronized与 ...

  7. iOS 线程安全之@synchronized的用法

    @synchronized(self)的用法: @synchronized 的作用是创建一个互斥锁,保证此时没有其它线程对self对象进行修改.这个是objective-c的一个锁定令牌,防止self ...

  8. Java中Synchronized的用法(简单介绍)

    简单介绍 synchronized是Java中的关键字,是一种同步锁.它修饰的对象有以下几种: 1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调 ...

  9. java中synchronized的用法详解

    记下来,很重要. Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 一.当两个并发线程访问同一个对象object中的这个synchron ...

  10. synchronized(this)用法

    关于 Java synchronized(this) 的问题   用法: public class Thread1 implements Runnable {public void run() { & ...

最新文章

  1. 利用dom4j将实体类转换为对应的xml报文
  2. CoGAN 和 SeGAN
  3. Fragment onCreateView inflate注意事项 (整理)
  4. (36)Gulp 构建资源(图片)文件
  5. .NET Core中Quartz.NET的依赖注入
  6. UpdatePannelFileUpload
  7. Java-虚拟机-执行引擎/解释器/编译
  8. 简单电脑***《菜鸟级》
  9. 计算机应用技术专业的未来,计算机应用技术专业召开“2020级人才培养方案修订”主题网络研讨会...
  10. Hibernate中Java对象的生命周期
  11. 微信多开软件苹果版_微信多开教程—Mac版amp;Win版
  12. linux命令大全密码修改,linux修改密码命令
  13. server sql 将出生日期转为年龄_SQL语句如何根据出生日期计算年龄
  14. 网易云音乐每日推荐自动保存为新歌单
  15. bootstrap树节点如何设置默认不展开_GraPhlAn:最美进化树或层级分类树学习笔记
  16. 去耦电容:10uF电容与0.1uF问题
  17. KMP算法图文详解(为什么是next[0]=-1、next[j]=k和k=next[k])
  18. 腾讯+字节+阿里面经真题汇总,总结到位
  19. 5、SRS4.0源代码分析之RTMP拉流处理
  20. 小猫爪:S32K3学习笔记21-S32K3之SAF及其应用

热门文章

  1. Nvelocity 第二章 注释语法
  2. 对包含HttpContext.Current.Cache的代码进行单元测试
  3. .net中Windows窗体间的数据交互
  4. mysql Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
  5. [COCI2009]Dvapravca
  6. The Python Challenge 闯关笔记
  7. js对特殊字符转义、时间格式化、获取URL参数
  8. eclipse启动tomcat无法访问的解决方法(转)
  9. 电脑麦克风插孔是哪个_科唛BoomXD 2.4G数字无线麦克风
  10. SQL文件的BOM问题导致的invalid character错误及解决