`
cyril0513
  • 浏览: 15564 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

<<java并发编程实践>>之复合操作加锁策略

阅读更多
public class UnSafeOperation {
   //直接使用this加锁
	public synchronized String get(Vector<String> vector) {
		if (vector.isEmpty()) {
			return null;
		}
		int index = vector.size() - 1;
		return vector.get(index);

	}
   //对vector加锁
	public String get1(Vector<String> vector) {
		synchronized (vector) {
			if (vector.isEmpty()) {
				return null;
			}
			int index = vector.size() - 1;
			return vector.get(index);
		}

	}

	public synchronized void delete(Vector<String> vector) {
		int index = vector.size() - 1;
		vector.remove(index);

	}

	public synchronized void delete1(Vector<String> vector) {
		synchronized (vector) {
			int index = vector.size() - 1;
			vector.remove(index);
		}

	}

	public static void main(String[] args) {
		final Vector<String> vector = new Vector<String>();
		vector.add("chneliang");
		final UnSafeOperation unSafe = new UnSafeOperation();
		new Thread() {
			public void run() {
				unSafe.get(vector);
			}

		}.start();
		unSafe.delete(vector);
	}

}



实现对Vector的修改,如果不使用加锁控制,这样的复合操作,会导致发生错误。但是如果加锁,是直接像get()方法这样,还是对修改的对象加锁,其实很明显,如果我们直接对this加锁,会导致该类中的其他同步方法受到阻塞,锁的粒度太大,如果我们仅仅只是对要修改的对象加锁,就不会有这样的问题。
初次学习并发,发现涉及锁的策略,也并不是那么简单的直接用一个synchronized关键字就能搞定的。
分享到:
评论

相关推荐

    java并发编程实践高清中文版+源码

    《JAVA并发编程实践》随着多核处理器的普及,使用并发成为构建高性能应用程序的关键。Java 5以及6在开发并发程序中取得了显著的进步,提高了Java虚拟机的性能以及并发类的可伸缩性,并加入了丰富的新并发构建块。在...

    Java并发编程实践高清pdf及源码

    《Java并发编程实践》是一本深入探讨Java多线程编程的经典著作,由Brian Goetz、Tim Peierls、Joshua Bloch、Joseph Bowles和David Holmes等专家共同编写。这本书全面介绍了Java平台上的并发编程技术,是Java开发...

    JAVA并发编程实践

    《JAVA并发编程实践》随着多核处理器的普及,使用并发成为构建高性能应用程序的关键。Java 5以及6在开发并发程序中取得了显著的进步,提高了Java虚拟机的性能以及并发类的可伸缩性,并加入了丰富的新并发构建块。在...

    java并发编程实践pdf笔记

    Java并发编程实践是Java开发中不可或缺的一个领域,它涉及到如何高效、正确地处理多线程环境中的任务。这本书的读书笔记涵盖了多个关键知识点,旨在帮助读者深入理解Java并发编程的核心概念。 1. **线程和进程的...

    java并发编程实践(中文版pdf全部40M分2部分上传)2

    《JAVA并发编程实践》既能够成为读者的理论支持,又可以作为构建可靠的、可伸缩的、可维护的并发程序的技术支持。《JAVA并发编程实践》并不仅仅提供并发API的清单及其机制,还提供了设计原则、模式和思想模型,使...

    JAVA并发编程实践.pdf

    《JAVA并发编程实践》适合于具有一定Java编程经验的程序员、希望了解Java SE 5以及6在线程技术上的改进和新特性的程序员,以及Java和并发编程的爱好者。 作者简介 作者:(美)戈茨 等 本书作者系lava标准化组织...

    [Java并发编程实践].(Java.Concurrency.in.Practice).Brian.Goetz.英文原版.pdf

    ### Java并发编程实践 #### 书籍概述 《Java并发编程实践》是一本由Brian Goetz等人编写的关于Java并发编程的经典著作。本书深入浅出地介绍了Java 5.0及之后版本中新增加的并发特性,并对并发编程进行了全面而详尽...

    java并发编程实践

    ### Java并发编程实践知识点详解 #### 一、Java并发编程基础 ##### 1.1 并发与并行概念区分 在Java并发编程实践中,首先需要理解“并发”与“并行”的区别。“并发”指的是多个任务同时进行,但实际上可能是在多...

    JAVA并发编程实践 pdf

    《JAVA并发编程实践》这本书是Java开发者深入理解并发编程的重要参考资料。并发编程是现代软件开发中的核心主题,尤其是在多核处理器普及的今天,利用好并发能够显著提升程序的执行效率和系统性能。这本书以实践为...

    java并发编程实践(第一版)

    《Java并发编程实践》作为一本关于Java并发编程的经典书籍,通过理论讲解和实践案例相结合的方式,全面地向读者介绍了如何在Java中实现高效的并发程序设计,为开发者提供了丰富的工具和策略来处理多线程编程中的挑战...

    Java并发编程实践

    《Java并发编程实践》这本书深入探讨了Java平台上的并发编程技术,涵盖了从基础概念到高级策略的广泛主题。在Java编程中,并发处理是优化性能、提高系统资源利用率的关键手段,尤其是在多核处理器和分布式系统中更为...

    Java并发编程实践-电子书

    Java并发编程实践-电子书-01章.pdf Java并发编程实践-电子书-02章.pdf Java并发编程实践-电子书-03章.pdf Java并发编程实践-电子书-04章.pdf Java并发编程实践-电子书-05章.pdf Java并发编程实践-电子书-06章.pdf ...

    java并发编程实战中文加英文版加源码

    JAVA并发编程实践中文版 英文版 原书源码 带书签 java_concurrency_in_practice.pdf 英文版还是不错的,但是中文版的译者典型的没有技术功底,介绍上说什么专家, 翻译的非常差劲,有些句子都不通顺,都不知道自己去...

    Java并发编程实践(中文)

    Java并发编程实践(中文) 高清pdf 带书签。 详细讲解了java并发知识,推荐

Global site tag (gtag.js) - Google Analytics