线程安全及相关

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

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

    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关键字的使用

你可能感兴趣的:(线程安全及相关)