文档章节

同步函数余同步代码块的“锁” 小结。

多态生命
 多态生命
发布于 2016/05/07 20:43
字数 276
阅读 43
收藏 1
点赞 2
评论 0


同步函数和同步代码块的区别:
1. 同步函数的锁是固定的this。
2. 同步代码块的锁是任意的对象。
建议使用同步代码块。
由于同步函数的锁是固定的this,同步代码块的锁是任意的对象,那么如果同步函数和同步代码块都使用this
作为锁,就可以实现同步。

class Ticket implements Runnable
{
	private  int num = 100;
//	Object obj = new Object();
	boolean flag = true;
	public void run()
	{
//		System.out.println("this:"+this);

		if(flag)
			while(true)
			{
				synchronized(this)
				{
					if(num>0)
					{
						try{Thread.sleep(10);}catch (InterruptedException e){}						
						System.out.println(Thread.currentThread().getName()+".....obj...."+num--);
					}
				}
			}
		else
			while(true)
				this.show();
	}

	public synchronized void show()
	{
		if(num>0)
		{
			try{Thread.sleep(10);}catch (InterruptedException e){}
			
			System.out.println(Thread.currentThread().getName()+".....function...."+num--);
		}
	}
}

class SynFunctionLockDemo 
{
	public static void main(String[] args) 
	{
		Ticket t = new Ticket();
//		System.out.println("t:"+t);

		Thread t1 = new Thread(t);
		Thread t2 = new Thread(t);

		t1.start();
		try{Thread.sleep(10);}catch(InterruptedException e){}
		t.flag = false;
		t2.start();
	}
}


© 著作权归作者所有

共有 人打赏支持
多态生命
粉丝 2
博文 8
码字总数 1613
作品 0
太原
java synchronized详解第二篇

第二篇: synchronized 关键字,它包括两种用法:synchronized 方法和 synchronized 块。 1. synchronized 方法:通过在方法声明中加入 synchronized关键字来声明 synchronized 方法。如: ...

小湘西 ⋅ 2015/09/27 ⋅ 0

Java同步机制浅谈――synchronized对代码作何影响?

Java对多线程的支持与同步机制深受大家的喜爱,似乎看起来使用了synchronized关键字就可以轻松地解决多线程共享数据同步问题。到底如何?――还得对synchronized关键字的作用进行深入了解才可...

orpheus ⋅ 2009/07/30 ⋅ 0

Java synchronized 详解

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

lzwxx ⋅ 2017/07/17 ⋅ 0

Android第二十天

一:同步机制(synchronized) 同步:在一个时间段内只能有一个线程运行某段代码块,在该线程运行的过程中, 其他线程不能进入,只有该线程运行完毕该代码块(或释放了同步锁),其他 线程才能...

黄晓磊 ⋅ 2016/06/24 ⋅ 0

编写高质量代码的52个有效方法(六)—块与大中枢派发

outstanding.png 当前多线程编程的核心就是“块”(block)与“大中枢派发”(Grand Central Dispatch,GCD)。 37.理解“块”这一概念 1.块的基础知识 块与函数类似,只不过是直接定义在另一...

才华惊动党中央 ⋅ 2017/12/21 ⋅ 0

用递归实现一个数n的阶乘

今天被问到了一个小问题,用递归实现一个n的阶乘: public int calculateFactorial( int n ){ if( n==1 ){ return n; } return n * calculateFactorial( n-1 ); } 还有一个问题,java的synch...

inferrrrrr ⋅ 2010/05/11 ⋅ 0

JAVA基础(10)-线程,同步函数,static静态同步函数的对象锁,单例模式的并发访问,死锁,同步函数和同步代码块的区别

同步函数--synchronized关键字 上篇多线程中讲到了同步代码块,这里讲的是同步函数--其实就是在函数上加上了同步关键字synchronized进行修饰。 同步表现的形式有两种:1.同步代码块。2.同步函...

Chason-洪 ⋅ 04/18 ⋅ 0

synchronized (this)语法说明

Android源码中的Display.java中getmetrics()函数代码如下: /** * Gets display metrics that describe the size and density of this display. * <p> * The size is adjusted based on the......

ethan330 ⋅ 2013/06/30 ⋅ 0

多线程(二)

线程安全问题 这里以简单的卖票程序为例开始本文的讲解,通过运行该卖票程序可以发现有可能打印出0、-1、-2等错票,这就表明多线程的运行出现了安全问题。产生的原因可归纳为两点: 线程任务...

yerenyuan_pku ⋅ 2017/10/08 ⋅ 0

java synchronized详解

文章转载于: http://www.cnblogs.com/GnagWang/archive/2011/02/27/1966606.html 记下来,很重要。 Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只...

wangtenfee ⋅ 2017/05/23 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

UI ,前端框架选型

Flat-UI

miaojiangmin ⋅ 2分钟前 ⋅ 0

Istio Service Mesh 教程

Istio Service Mesh 教程 作者 宋净超 | 5400字 | 阅读大约需要11分钟 | 归档于istio | 发表于 2018-05-22 标签 #Istio #教程,来自 https://servicemesher.github.io/blog/istio-service-m...

openthings ⋅ 8分钟前 ⋅ 0

scala swing

scala swing组件的库 https://github.com/scala/scala-swing scala swing的API文档 https://www.scala-lang.org/api/2.9.1/scala/swing/package.html...

whoisliang ⋅ 12分钟前 ⋅ 0

CentOS安装配置Nginx

安装依赖 yum install gcc yum install pcre-devel yum install zlib zlib-devel yum install openssl openssl-devel //一键安装上面四个依赖 yum -y install gcc zlib zlib-devel pcre-deve......

临江仙卜算子 ⋅ 18分钟前 ⋅ 0

开源 java CMS - FreeCMS2.8 依申请公开

项目地址:http://www.freeteam.cn/ 依申请公开 1. 转交申请公开 用户可以把申请公开转交给其他人办理,系统会记录此申请公开的转交记录。 注意:同时只能转交一个申请公开。 选择需要转交的...

freeteam ⋅ 23分钟前 ⋅ 0

以太坊 web3.py 签名转账

以太坊 web3.py 签名转账 本文节选自电子书《Netkiller Blockchain 手札》 Netkiller Blockchain 手札 Mr. Neo Chan, 陈景峯(BG7NYT) 中国广东省深圳市龙华新区民治街道溪山美地 518131 +86...

netkiller- ⋅ 28分钟前 ⋅ 0

年薪40W的程序员必会的技术有哪些?

很多人在问我,程序员如何拿高薪,如何做到年薪40W+,其实总结出来还是一句话,你的技术决定你的能力已经薪资。 那么什么样的技术人才才能拿到一份Java行业里面的高薪呢? 下面是我的一个总结...

码代码的小司机 ⋅ 29分钟前 ⋅ 0

jesque-spring使用及源码分析

1.使用 jesque结合spring使用,步骤如下: 1.1 在项目中添加maven依赖 <dependency> <groupId>net.lariverosc</groupId> <artifactId>jesque-spring</artifactId> <version>1.0.0</ve......

Funcy1122 ⋅ 30分钟前 ⋅ 0

OSChina 周二乱弹 —— 加班的代码不要枉费了我的童子功

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @小小编辑:推荐歌曲《29》- 未完成乐队 《29》- 未完成乐队 手机党少年们想听歌,请使劲儿戳(这里) @FalconChen :#看球提醒# 02:00 巴西v...

小小编辑 ⋅ 56分钟前 ⋅ 15

Docker Swarm的前世今生

概述 在我的《Docker Swarm集群初探》一文中,我们实际体验了Docker Swarm容器集群技术的魅力,与《Kubernetes实践录》一文中提到的Kubernetes集群技术相比,Docker Swarm没有Kubernetes显得...

CodeSheep ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部