文档章节

synchronized块

Chain
 Chain
发布于 2014/09/29 22:44
字数 214
阅读 12
收藏 0
点赞 0
评论 0

synchronized块相对于方法声明加synchronized关键字,更加灵活

例子

public class FetchRunnable implements Runnable{

	private String TAG_1 = new String("TAG_1");//锁this
	private static String TAG_2 = new String("TAG_2");//锁class
	private String TAG_3 = "TAG_3";//锁class
	
	public void run() {
		//runClass();
		//runThis();
		runTag(TAG_1);
		sleep();
		runTag(TAG_2);
		sleep();
		runTag(TAG_3);
	}
	
	private void runClass() {
		synchronized (FetchRunnable.class) {
			System.out.println("run Class");
			sleep();
		}
	}
	
	private void runThis() {
		synchronized (this) {
			System.out.println("run this");
			sleep();
		}
	}
	
	private void runTag(String tag) {
		synchronized (tag) {
			System.out.println(Thread.currentThread().getName() + " run " + tag +" 秒="+Calendar.getInstance().get(Calendar.SECOND));
			sleep();
		}
	}

	private void sleep() {
		try {
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) {
		Thread t0 = new Thread(new FetchRunnable());
		Thread t1 = new Thread(new FetchRunnable());
		t0.start();
		t1.start();
	}
}

运行结果

Thread-0 run TAG_1 秒=18
Thread-1 run TAG_1 秒=18
Thread-1 run TAG_2 秒=20
Thread-0 run TAG_2 秒=21
Thread-1 run TAG_3 秒=22
Thread-0 run TAG_3 秒=23

© 著作权归作者所有

共有 人打赏支持
Chain
粉丝 5
博文 88
码字总数 52216
作品 0
朝阳
多线程学习笔记(八)

注: 当一个线程执行的代码出现异常时,其所持有的锁会自动释放 同步不具有继承性 不在synchronized块中就是一部执行,在synchronized中就是同步执行 和synchronized方法一样,synchronized(thi...

scymore ⋅ 2016/09/07 ⋅ 0

Java多线程学习(三)

用关键字synchronized声明方法是有弊端的。 synchronized同步代码块的使用:当两个并发线程访问桶一个对象object中的synchronized(this)同步代码块是,一段时间内只能有一个线程被执行,另...

kakayang2011 ⋅ 2016/03/01 ⋅ 0

java synchronized 关键字详解

Java语言的关键字,可用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这段代码。当两个并发线程访问同一个对象object中的这个加锁同步...

alonelywolf ⋅ 2015/12/30 ⋅ 0

Java 同步方式 (1) —— synchronized

前两篇博客 ArrayList 用法比较 和 String 用法比较,介绍过程中都提及到了同步和线程安全的问题,本篇将重点介绍Java同步方式之一的synchronized用法。 线程安全 线程安全,是指每次运行结果...

长平狐 ⋅ 2013/01/06 ⋅ 0

java并发编程(1)——synchronized关键字解析

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

十二缸帕萨特 ⋅ 2014/04/12 ⋅ 0

java 同步块(Java Synchronized Blocks)

Java 同步块包括方法同步和代码块同步。java 同步可以避免资源竞争,避免死锁。 主题包括的主要内容: 关键字 Synchronized 实例方法 Synchronized static methods Synchronized blocks in i...

丁佳辉 ⋅ 2015/08/18 ⋅ 0

Java多线程学习(二)synchronized关键字(2)

系列文章传送门: Java多线程学习(一)Java多线程入门 Java多线程学习(二)synchronized关键字(1) java多线程学习(二)synchronized关键字(2) Java多线程学习(三)volatile关键字 Ja...

一只蜗牛呀 ⋅ 04/16 ⋅ 0

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

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

icanos ⋅ 2016/07/21 ⋅ 0

理解 java 中的 synchronized 关键字

实际上,我关于java的基础知识的90%以上都来自Thinking in Java。对于其中的synchronized关键字, 当时就是浏览一下,大概知道意思,也没有细看。后来一直没有用过这个关键字。 昨天看Think...

xrzs ⋅ 2012/10/27 ⋅ 0

学习笔记6:synchronized关键字-->线程同步

为什么要使用关键字synchronized? java程序中可以存在多个线程,但是当多个线程操作同一资源时候,可能会导致数据不一致。 区分synchronized方法与synchronized块: synchronized方法是一种粗...

牧羊人Berg ⋅ 2015/11/07 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Day 17 vim简介与一般模式介绍

vim简介 vi和Vim的最大区别就是编辑一个文件时vi不会显示颜色,而Vim会显示颜色。显示颜色更便于用户编辑,凄然功能没有太大的区别 使用 yum install -y vim-enhanced 安装 vim的三种常用模式...

杉下 ⋅ 56分钟前 ⋅ 0

【每天一个JQuery特效】根据可见状态确定是否显示或隐藏元素(3)

效果图示: 主要代码: <!DOCTYPE html><html><head><meta charset="UTF-8"><title>根据可见状态确定 是否显示或隐藏元素</title><script src="js/jquery-3.3.1.min.js" ty......

Rhymo-Wu ⋅ 今天 ⋅ 0

OSChina 周四乱弹 —— 初中我身体就已经垮了,不知道为什么

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @加油东溪少年 :下完这场雨 后弦 《下完这场雨》- 后弦 手机党少年们想听歌,请使劲儿戳(这里) @马丁的代码 :买了日本 日本果然赢了 翻了...

小小编辑 ⋅ 今天 ⋅ 12

浅谈springboot Web模式下的线程安全问题

我们在@RestController下,一般都是@AutoWired一些Service,由于这些Service都是单例,所以并不存在线程安全问题。 由于Controller本身是单例模式 (非线程安全的), 这意味着每个request过来,...

算法之名 ⋅ 今天 ⋅ 0

知乎Java数据结构

作者:匿名用户 链接:https://www.zhihu.com/question/35947829/answer/66113038 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 感觉知乎上嘲讽题主简...

颖伙虫 ⋅ 今天 ⋅ 0

Confluence 6 恢复一个站点有关使用站点导出为备份的说明

推荐使用生产备份策略。我们推荐你针对你的生产环境中使用的 Confluence 参考 Production Backup Strategy 页面中的内容进行备份和恢复(这个需要你备份你的数据库和 home 目录)。XML 导出备...

honeymose ⋅ 今天 ⋅ 0

JavaScript零基础入门——(九)JavaScript的函数

JavaScript零基础入门——(九)JavaScript的函数 欢迎回到我们的JavaScript零基础入门,上一节课我们了解了有关JS中数组的相关知识点,不知道大家有没有自己去敲一敲,消化一下?这一节课,...

JandenMa ⋅ 今天 ⋅ 0

火狐浏览器各版本下载及插件httprequest

各版本下载地址:http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/ httprequest插件截至57版本可用

xiaoge2016 ⋅ 今天 ⋅ 0

Docker系列教程28-实战:使用Docker Compose运行ELK

原文:http://www.itmuch.com/docker/28-docker-compose-in-action-elk/,转载请说明出处。 ElasticSearch【存储】 Logtash【日志聚合器】 Kibana【界面】 答案: version: '2'services: ...

周立_ITMuch ⋅ 今天 ⋅ 0

使用快嘉sdkg极速搭建接口模拟系统

在具体项目研发过程中,一旦前后端双方约定好接口,前端和app同事就会希望后台同事可以尽快提供可供对接的接口方便调试,而对后台同事来说定好接口还仅是个开始、设计流程,实现业务逻辑,编...

fastjrun ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部