不可变对象的设计

x33g5p2x  于2022-04-17 转载在 其他  
字(0.7k)|赞(0)|评价(0)|浏览(168)

一 点睛

Java 核心类库中提供了大量的不可变对象范例,其中 String 的每一个方法都没有同步修饰,可是在多线程访问的情况下是安全的,Java 8 中通过 Stream 修饰的 ArrayList 在函数式方法并行访问的情况下也是线程安全的,所谓不可变对象是没有机会去修改它,每一次修改都会导致一个新的对象产生,比如 String s1 = "Hello";s1 =s1+" world",两者相加产生新的字符串。

有写非线程安全可变对象被不可变机制加以处理后,照样也具备不可变性的结果。

二 代码

package concurrent;

import java.util.Arrays;
import java.util.List;

public class ArrayListStream {
    public static void main(String[] args) {
        // 定义个 list 并且使用 Arrays 的方式进行初始化
        List<String> list = Arrays.asList("Java", "Thread", "Conrurreny");
        // 获取并且的 stream,然后通过 map 函数对 list 中的数据进行加工,最后输出
        list.parallelStream().map(String::toUpperCase).forEach(System.out::println);
        list.forEach(System.out::println);
    }
}

三 测试

THREAD

CONRURRENY

JAVA

Java

Thread

Conrurreny

相关文章