Java 的synchronized关键字使用
synchronized 关键字是实现锁的一种方式,是在jvm层面实现的非公平锁,以下是使用synchronized的四种方式
synchronized 特性:
1.非公平锁
2.可重入性
1.作用在方法上,保证了访问同一个对象的同一个方法的线程同步
public synchronized void testFun(String str){
for(int i=0;i<15;i++){
System.out.println(str+",执行中...");
}
}
2.对象加锁,保证同时访问同一个对象的线程同步
public void testObject(String str){
synchronized (this){
for(int i=0; i<15;i++){
System.out.println(str+",执行中");
}
}
}
1,2 两种加锁方式在表现形式上是相同的
public static void main(String[] args){
ExecutorService executorService = Executors.newCachedThreadPool();
SynchronizeTest1 synchronizeTest1 = new SynchronizeTest1();
executorService.execute(new Runnable() {
@Override
public void run() {
synchronizeTest1.testObject("线程1");
}
});
executorService.execute(new Runnable() {
@Override
public void run() {
synchronizeTest1.testObject("线程2");
}
});
}
3.作用在类上
public static void testClass(String str){
synchronized (SynchronizeTest2.class){
for(int i=0 ;i<15;i++){
System.out.println(str+",执行中");
}
}
}
4.作用在静态方法上
public synchronized static void testStaticFun(String str){
for(int i=0;i<15;i++){
System.out.println(str+",执行中");
}
}
3,4 在表现形式上是一样的
public static void main(String[] args){
ExecutorService executorService = Executors.newCachedThreadPool();
executorService.execute(new Runnable() {
@Override
public void run() {
testClass("线程1"); //可以替换为testStaticFun 方法
}
});
executorService.execute(new Runnable() {
@Override
public void run() {
testClass("线程2"); //可以替换为testStaticFun 方法
}
});
executorService.shutdown();
}
Java 的synchronized关键字使用的更多相关文章
- Java 多线程 —— synchronized关键字
java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 ...
- Java的synchronized关键字:同步机制总结
JAVA中synchronized关键字能够作为函数的修饰符,也可作为函数内的语句,也就是平时说的同步方法和同步语句块.搞清楚synchronized锁定的是哪个对象,就能帮助我们设计更安全的多线程程 ...
- java中synchronized关键字分析
今天我们来分析一下java中synchronized关键字.首先来看一段java代码:(本地编译环境为mac,jdk1.8的环境) Demo.java package com.example.spri ...
- Java基础-synchronized关键字的用法(转载)
synchronized--同步 顾名思义是用于同步互斥的作用的. 这里精简的记一下它的使用方法以及意义: 当synchronized修饰 this或者非静态方法或者是一个实例的时候,所同步的锁是加在 ...
- 从分布式锁角度理解Java的synchronized关键字
分布式锁 分布式锁就以zookeeper为例,zookeeper是一个分布式系统的协调器,我们将其理解为一个文件系统,可以在zookeeper服务器中创建或删除文件夹或文件.设D为一个数据系统,不具备 ...
- java基础Synchronized关键字之对象锁
java中Synchronized关键字之对象锁 当有多个线程对一个共享数据进行操作时,需要注意多线程的安全问题. 多线程的同步机制对资源进行加锁,使得在同一个时间,只有一个线程可以进行操作,同 ...
- java中synchronized关键字的用法
在java编程中,经常需要用到同步,而用得最多的也许是synchronized关键字了,下面看看这个关键字的用法. 因为synchronized关键字涉及到锁的概念,所以先来了解一些相关的锁知识. j ...
- Java Concurrency - synchronized 关键字
当有多个线程竞争共享资源时,对资源的访问顺序敏感,则可能造成数据不一致.为了保证共享资源不被多个线程同时访问,则需要将竞争共享资源的代码置于临界区,临界区保证在同一时间内最多只能有一个线程执行该代码段 ...
- 【原创】对Java的synchronized关键字的学习
在Java中,每一个线程都有一个内部锁.当我们使用synchronized关键字时,就是利用这个内部锁来实现线程对某个对象的锁定控制. 那么,如果某个对象中有两个方法,方法一和方法二都使用了synch ...
- Java多线程synchronized关键字
synchronized关键字代表着同步的意思,在Java中被synchronized修饰的有三种情况 1.同步代码块 //锁为objsynchronized(obj){ while(true){ i ...
随机推荐
- HTML入门(html基本文本标签+快捷键讲解以及基本html组成解释)
id 标签 功能 1 <hr /> 水平分割线 2 <br /> 强制让文本换行 3 <p>段落</p> 段落标签(自带换行效果) 4 < ...
- java读取文本文件内容2
版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/183 很久之前写了一篇Java读取文本文件内容,链接地址是 ...
- Zabbix-3.4简介及安装配置
一.概述 1.为什么选择Zabbix? Zabbix是一款能够监控各种网络参数以及服务器健康性和完整性的软件.Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警.这样可以快速反馈 ...
- python从小白到大咖方便查看链接
直通BAT面试题 PyCharm快捷键 一.python基础 01 python基础 02python中基本数据类型以及运算符 03流程控制之if,while,for 04基本数据类型内置方法一 05 ...
- 百度BAE专业版申购SSL证书
这几天开发了一个小程序,本来想放到BAE基础版的,但是基础版现在不能再新增项目了,想了一下,出点血,配了个专业版.但是专业版的SSL证书是需要配的,而小程序必须使用https,所有必须申请一个证书.在 ...
- Nginx:反向代理
与众不同的生活方式很累人呢,因为找不到借口 在上一章节中,我们以及了解到正向.反向代理.负载均衡和动静分离的基本概念,安装教程,而在本节中将会了解到在 本文要点: 1.理清概念 2.Linux ...
- Python的filter方法实现筛选功能
filter方法可以实现筛选,第一个参数是一个函数,返回值是True或者False,第二个参数可以是str.tuple.list,将后面的参数依次传递给函数,依次判断结果,留下结果为 True的.比如 ...
- MVC(实战二:网址映射)
一.默认网址 Global.asax 默认网址配置: 此时打开编辑页面,效果如下: ?后面包含name参数和Email参数 在Global中修改网址路由: public static void Re ...
- 深挖计算机基础:趣谈Linux操作系统学习笔记
参考极客时间专栏<趣谈Linux操作系统>学习笔记 核心原理篇:内存管理 趣谈Linux操作系统学习笔记:第二十讲 趣谈Linux操作系统学习笔记:第二十一讲 趣谈Linux操作系统学习笔 ...
- 基于V7的emWin多屏显示方案模板,同时驱动LCD和OLED例程
说明: 1.多屏驱动跟多图层驱动是类似的,可以使用函数GUI_SelectLayer做切换选择. 2.为了避免OLED闪烁问题,创建一个128*64bit的显存空间,然后使用emWin的GUI_TIM ...