当前位置:首页 > 开发 > 编程语言 > 多线程 > 正文

java 多线程的锁消除

发表于: 2014-09-12   作者:annan211   来源:转载   浏览次数:
摘要: Java 中使用同步 来保证数据的安全性,但是对于一些明显不会产生竞争的情况下,Jvm会根据现实执行情况对代码进行锁消除以提高执行效率。 比如下面一段代码 package thread; public class SynchronizedDemo { public void fuck(){ DataDemo demo = new DataDemo();
Java 中使用同步 来保证数据的安全性,但是对于一些明显不会产生竞争的情况下,Jvm会根据现实执行情况对代码进行锁消除以提高执行效率。
比如下面一段代码

 package thread;

public class SynchronizedDemo {

	public void fuck(){
		DataDemo demo = new DataDemo();
		demo.add();
	}

}

class DataDemo {

	private int data;

	public synchronized void add(){
		data++;
	}

	public int  get(){
		return data;
	}
}



add 方法 使用synchronized 来实现同步 这是正确的,但是由于DataDemo对象是创建在方法内部的,并不影响其他线程的执行,所以虚拟机认为这里并不需要synchronized 来限制,所以就会执行锁消除。 StringBuffer 是线程安全的,但是如果StringBuffer的对象定义在局部方法里,也是会被虚拟机进行锁消除的。

java 多线程的锁消除

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
  掌握Java中的多线程,必须掌握Java中的各种锁,以及了解Java中线程池的运用。关于Java多线程基
本章,我们介绍锁的架构;后面的章节将会对它们逐个进行分析介绍。目录如下: 01. Java多线程系列--
正确理解Java中的多线程多Synchronized对我们学习多线程编程非常重要,下面的测试程序阐述了Java对
1、Java线程的状态 1. 新建状态(New):新创建了一个线程对象。 2. 就绪状态(Runnable):线程对
【转至】http://www.blogjava.net/mengyuan760/archive/2010/05/06/320174.html Lombok是一个开源项
java并发(十)死锁 & 活锁 活锁:一个线程通常会有会响应其他线程的活动。如果其他线程也会响应另
Lombok是一种JavaArchive(JAR)文件,可用来消除Java代码的冗长。通过在开发环境中实现Lombok,开发
在多线程环境下对字符串进行MD5,到底应该使用加锁来共享同一个MessageDigest呢?还是每次新创建一
在多线程环境下对字符串进行MD5,到底应该使用加锁来共享同一个MessageDigest呢?还是每次新创建一
一、引言: JAVA 是一个多线程并发的语言,现在只要有点经验的JAVA程序员,对于多线程、并发等词汇
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号