美文网首页Object-c
线程安全及相关

线程安全及相关

作者: wuhuaguo丶 | 来源:发表于2019-04-29 21:12 被阅读0次
    • 什么是线程安全
      堆内存中的数据由于可以被任何线程所访问,在没有限制的情况下存在被意外修改的风险。即堆内存空间在没有保护机制的情况下,对多线程来说是不安全的,因为放进去的数据可能被别的线程破坏。
      如果代码所在的进程中有多个线程在同时运行,而这些线程可能会同时执行这段代码,如果多线程运行的结果和单线程运行的结果是一样的,而且其他变量的值和预期也是一样的,就是线程安全的。
      编程新说:什么是线程安全

    • 怎样实现线程安全
      一般来说常见的用于保证线程安全的方式有两种

      1. synchronized
        synchronized关键字以及和 ReenTrantLock 的对比
      2. lock(ReenTrantLock )
        ReenTrantLock 为Lock的子类
        private Lock lock = new ReentrantLock();
         private void method(Thread thread){
           lock.lock(); // 获取锁对象
           try {
             System.out.println("线程名:"+thread.getName() + "获得了锁");
           // Thread.sleep(2000);
           }catch(Exception e){
             e.printStackTrace();
           } finally {
           System.out.println("线程名:"+thread.getName() + "释放了锁");
           lock.unlock(); // 释放锁对象
        }
        }
        

      5个步骤,教你瞬间明白线程和线程安全

    • synchronized与ReenTrantLock的区别
      synchronized关键字以及和 ReenTrantLock 的对比

    • volatile关键字的使用

    相关文章

      网友评论

        本文标题:线程安全及相关

        本文链接:https://www.haomeiwen.com/subject/dqiunqtx.html