2共享对象

1.共享对象

      1.锁不仅仅是关于同步和互斥的,也是关于内存可见的。为了保证所有线程都能看到共享的,可变的变量的最新值,读取和写入线程必须使用公共的锁进行同步

      2.volatile保证内存可见性,但是不保证原子性,满足以下条件时可以使用volatile关键字

         2.1写入变量时不依赖变量的当前值,或者保证只有一个线程会对变量进行修改

         2.2变量不需要和其他变量 共同参与不变约束

         2.3访问变量时不需要加锁

      3. 逸出

           1.class a{

               private static List<String> list = new Arraylist<String>();

               publilc List<String> getvalue(){

                   //此处list逸出,获得list引用的线程可以进行其他任何操作

                   return list;

}

            }

           2.this引用的逸出

              2.1 在构造函数中启动线程导致逸出

              2.2 构造函数中使用匿名类时可能导致逸出

      http://blog.csdn.net/flysqrlboy/article/details/10607295#

          3.线程封闭(达到避免使用共享变量)

             3.1栈封闭,使用局部变量

             3.2threadLocal线程封闭

          4.如何保证一个对象不可用

             1.他的状态在创建后不允许呗修改

              2.所有域都是final的

              3.对象创建没有发生this逸出

          5.如何安全发布一个对象

             

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值