关于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
转载于:https://blog.51cto.com/springxml/1537373
关于Synchronized的用法相关推荐
- java synchronized 使用_Java中Synchronized的用法
synchronized是Java中的关键字,是一种同步锁.它修饰的对象有以下几种: 1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码 ...
- Java中Synchronized的用法
原文:http://blog.csdn.net/luoweifu/article/details/46613015 <编程思想之多线程与多进程(1)--以操作系统的角度述说线程与进程>一文 ...
- Java 多线程:synchronized 关键字用法(修饰类,方法,静态方法,代码块)
前言 在 多线程生成的原因(Java内存模型与i++操作解析) 中,介绍了Java的内存模型,从而可能导致的多线程问题.synchronized就是避免这个问题的解决方法之一.除了 synchroni ...
- Java线程中关于Synchronized的用法
synchronized是Java中的关键字,是一种同步锁.它修饰的对象有以下几种: 1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代 ...
- 从不同步的代码块中调用了对象同步方法。_Java中Synchronized的用法
Java中,synchronized关键字是用来控制线程同步的,就是在多线程的环境下,控制synchronized代码段不被多个线程同时执行.拉勾IT课小编为大家分析. synchronized是Ja ...
- synchronized解释用法及原理
转自:HollisChuang's Blog synchronized synchronized的用法 synchronized的实现原理 synchronized与原子性 synchronized与 ...
- iOS 线程安全之@synchronized的用法
@synchronized(self)的用法: @synchronized 的作用是创建一个互斥锁,保证此时没有其它线程对self对象进行修改.这个是objective-c的一个锁定令牌,防止self ...
- Java中Synchronized的用法(简单介绍)
简单介绍 synchronized是Java中的关键字,是一种同步锁.它修饰的对象有以下几种: 1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调 ...
- java中synchronized的用法详解
记下来,很重要. Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 一.当两个并发线程访问同一个对象object中的这个synchron ...
- synchronized(this)用法
关于 Java synchronized(this) 的问题 用法: public class Thread1 implements Runnable {public void run() { & ...
最新文章
- 利用dom4j将实体类转换为对应的xml报文
- CoGAN 和 SeGAN
- Fragment onCreateView inflate注意事项 (整理)
- (36)Gulp 构建资源(图片)文件
- .NET Core中Quartz.NET的依赖注入
- UpdatePannelFileUpload
- Java-虚拟机-执行引擎/解释器/编译
- 简单电脑***《菜鸟级》
- 计算机应用技术专业的未来,计算机应用技术专业召开“2020级人才培养方案修订”主题网络研讨会...
- Hibernate中Java对象的生命周期
- 微信多开软件苹果版_微信多开教程—Mac版amp;Win版
- linux命令大全密码修改,linux修改密码命令
- server sql 将出生日期转为年龄_SQL语句如何根据出生日期计算年龄
- 网易云音乐每日推荐自动保存为新歌单
- bootstrap树节点如何设置默认不展开_GraPhlAn:最美进化树或层级分类树学习笔记
- 去耦电容:10uF电容与0.1uF问题
- KMP算法图文详解(为什么是next[0]=-1、next[j]=k和k=next[k])
- 腾讯+字节+阿里面经真题汇总,总结到位
- 5、SRS4.0源代码分析之RTMP拉流处理
- 小猫爪:S32K3学习笔记21-S32K3之SAF及其应用
热门文章
- Nvelocity 第二章 注释语法
- 对包含HttpContext.Current.Cache的代码进行单元测试
- .net中Windows窗体间的数据交互
- mysql Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
- [COCI2009]Dvapravca
- The Python Challenge 闯关笔记
- js对特殊字符转义、时间格式化、获取URL参数
- eclipse启动tomcat无法访问的解决方法(转)
- 电脑麦克风插孔是哪个_科唛BoomXD 2.4G数字无线麦克风
- SQL文件的BOM问题导致的invalid character错误及解决