并发工具概览

并发工具总的可以分为三类:

  • 为了并发安全的
  • 为了管理线程提高效率的
  • 为了线程协作之间配合的

为了并发安全的

  • 互斥同步
    synchronized、ReentrantLock、ReadWriteLock等各种锁,当然也包括Collections.SynchronizedMap,使用synchronized的集合Vector、HashTable
  • 非互斥同步
    主要包括Atomic包下的很多原子类
  • 结合互斥同步和非互斥同步 ,也就是利用成熟的工具类
    主要指线程安全的并发容器,如使用了synchronized和cas的ConcurrentHashMap,CopyOnWriteArrayList,ConcurrentSkipListMap和ConcurrentSkipListSet,还包括阻塞队列和非阻塞队列
  • 无同步方案,即避免共享变量
    如final,ThreadLocal,栈封闭

为了管理线程提高效率的
线程池相关、获取子线程运行结果的Callable、Future、FutureTask等

线程之间配合的
CountDownLatch、Semaphore、Condition、Phaser、Exchanger、CycliBarrier等

java线程属于什么线程?

线程是调度CPU的最小单元,有两种线程模型

  • ULT 用户级线程,也叫协程
    用户程序来实现,不依赖操作系统核心,应用控制线程的创建、同步、调度和管理;不需要用户态/内核态切换;内核对ULT无感知,线程阻塞则进程阻塞。
  • KLT 内核级线程
    系统内核保存线程的状态和上下文,线程的创建、调度和管理由内核完成,效率比ULT要慢一些。线程阻塞不会引起进程阻塞。在多核处理器上,多线程并行运行。

要使用内核空间需要提高权限,所以要切换到内核态获取内核空间的权限,然后调用系统接口创建线程。这是比较重的操作

JVM使用的是内核级线程,证明:JVM创建多个线程后可以在任务管理中看到系统线程数对应增加。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值