线程相关整理

一 常用的线程手段


1 synchronized 有方法,和方法块,新的java版本 内部实现已经包含了多种方案,并动态调整方案,因此不是特别需求的化,建议直接用此方式
2 reentrantlock 可以构造公平锁
以上两种 代码片段应该是没得选择。
3 volatile 可见性 和 有序性--简单的读取与赋值操作是原子性的,如果只是简单读写一个共享变量,可以用volatile保证可见性和有序性就可以了
4 cas 保证原子性:AtomicBoolean,AtomicInteger,AtomicReference
  简单的读取与赋值操作是原子性的,将一个变量赋给另外一个变量的操作不是原子性的,因此AtomicReference可以保证引用的赋值的原子性
5 threadlocal 就是空间换时间。  
懂当然都懂,每次看每次都懂,
实际使用的时候,还是各种问题,应该及时总结下来,忘完了

二 实际问题记录
 

1 notify的时候,自己的代码块要先执行完,无论notify后有多少代码都要先只需完,新的拿到锁的线程才能执行
2 同步锁对象,不要变动,不然会出问题
3 之前通过一个变量值来控制线程的退出
  但该变量值改动后,有时候却没有退出(要保证可见性)
4 集合罗列:
ArrayList线程不安全,Vector线程部分安全CopyOnWriteArrayList 线程安全
HashMap线程不安全,ConcurrentHashMap和ConcurrentSkipListMap.线程安全(hashtable不再用)
stringBuilder线程不安全,StringBuffer线程安全
5 线程死锁:线程a 同步访问了线程b的代码,而线程b的代码也直接或间接的同步访问了这个共享资源,且锁不是同一把,就会死锁
 

三 后续持续加入中

相关推荐

  1. 线相关整理

    2024-02-21 10:54:03       48 阅读
  2. 线相关知识

    2024-02-21 10:54:03       42 阅读
  3. 线常识相关

    2024-02-21 10:54:03       39 阅读
  4. Unity 线相关知识

    2024-02-21 10:54:03       43 阅读
  5. 【Linux】多线相关问题

    2024-02-21 10:54:03       57 阅读
  6. 线相关的类学习

    2024-02-21 10:54:03       40 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-21 10:54:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-21 10:54:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-02-21 10:54:03       87 阅读
  4. Python语言-面向对象

    2024-02-21 10:54:03       96 阅读

热门阅读

  1. 深度神经网络

    2024-02-21 10:54:03       55 阅读
  2. 【算法题】114. 二叉树展开为链表

    2024-02-21 10:54:03       49 阅读
  3. 实习日志22

    2024-02-21 10:54:03       39 阅读
  4. Python日志(logging)

    2024-02-21 10:54:03       42 阅读