从不可变对象的定义来看,其实比较简单,就是一个对象在创建后,不能对该对象进行任何更改。 我们是否考虑过一个问题:假如Java中的String、包装器类设计成可变的ok么? 我们这一节主要来聊聊不可变对象存在的意义。 大多数情况下,对于资源互斥访问的场景,都是采用加锁的方式来实现对资源的串行访问,来保证并发安全,如synchronize关键字,Lock锁等。 事实上,引起线程安全问题的根本原因在于:多个线程需要同时访问同一个共享资源。 假如没有共享资源,那么多线程安全问题就自然解决了,Java中提供的ThreadLocal机制就是采取的这种思想。 我们来看一个例子,这个例子来源于: 例如一个有个线程1执行了以下代码:
暂无评论