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
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/chengqiuming/article/details/124214182
内容来源于网络,如有侵权,请联系作者删除!