操作 java并发-线程安全及不可变性(5)
2017-11-17 13:38
471 查看
当多个线程同时访问同一个资源是,可能会出现资源竞争。例如:多个线程对同一个文件出现了读和写的操作,这就会产生竞态条件。如果都是读的话,就不会出现竞争,因为读数据不会造成影响,多个线程可以同时读取。
解决多线程的一种方式创建不可变量。也就是创建一个不可被改变的变量。
引用资源:http://ifeve.com/thread-safety-and-immutability/
解决多线程的一种方式创建不可变量。也就是创建一个不可被改变的变量。
package com.concurenny.chapter.five; /** * 创建者:Mr lebron 创建时间:2017年11月17日 上午10:36:23 */ public class ImmutableValue { public static void main(String[] args) { ImmutableValue immutableValue = new ImmutableValue(); System.out.println("原始对象:" + immutableValue); System.out.println("修改之后:" + immutableValue.modify(10)); System.out.println("原始对象:" + immutableValue); } private int value;// 该值是不可变的,因为是私有的并且没有setter方法 private Referer referer;// 该值是不可变的,因为是私有的并且没有setter方法 public ImmutableValue() { value = 0; referer = new Referer(); } public ImmutableValue(int value, Referer referer) { super(); this.value = value; this.referer = referer; } @Override public String toString() { return "ImmutableValue [value=" + value + ", referer=" + referer + "]"; } public int getValue() { return value; } public Referer getReferer() { return referer; } public ImmutableValue modify(int plus) { // 返回一个新的对象,对象的成员对象都必须是新值,防止引用对象被泄露,发生被改变的可能。 return new ImmutableValue(this.value + plus, new Referer(referer)); } static class Referer { private int value = 0; public Referer() { } public Referer(Referer referer) { this.value = referer.value; } public int getValue() { return value; } public void setValue(int value) { this.value = value; } @Override public String toString() { return "Referer [value=" + value + "]"; } } }
引用资源:http://ifeve.com/thread-safety-and-immutability/
相关文章推荐
- 【java线程安全及不可变性】
- 【java线程安全及不可变性】
- 10、Java并发性和多线程-线程安全与不可变性
- 【java线程安全及不可变性】
- Java并发:线程安全的容器:同步和并发
- 线程安全及不可变性
- JAVA 并发编程随笔【七】线程安全与共享资源
- Java并发操作——基本的线程机制
- Java并发系列(二)线程安全与对象的发布
- java并发(一)线程安全概念
- Java并发(1) i++的线程安全问题
- JAVA 并发编程随笔【七】线程安全与共享资源
- Java并发学习之四——操作线程的中断机制
- Java 并发之线程安全
- java并发-线程安全与共享资源(4)
- JAVA 并发编程随笔【七】线程安全与共享资源
- Java并发(一)-- 线程安全(从“线程不安全”说起)
- Java 并发之线程安全
- Java并发编程(Java Concurrency)(10)- 线程安全与不变性(Thread Safety and Immutability)
- Java并发系列-7、线程安全与共享资源