JUC
二月夜
这个作者很懒,什么都没留下…
展开
-
【java】【高并发】自旋锁
一、什么是自旋锁? 自旋锁与互斥锁类似,通过“自旋”使当前线程不放弃CPU时间片,而是忙等待,直到锁的持有者释放了要获取的锁,所以可见“自旋锁”是一种非阻塞锁。 在叙述一下,阻塞锁,当一个线程A在获取到锁时,再有线程B试图获取锁时,那么线程B将会挂起(阻塞);而自旋锁是,当线程B试图获取锁时,如果获取不到,则处于自旋,不释放CPU资源,减少线程上下文切换开销,以便当线程A释放锁,直接运行。 ...转载 2018-09-13 14:47:23 · 282 阅读 · 0 评论 -
线程池ThreadPoolExecutor参数设置
一、ThreadPoolExecutor类主要参数设置corePoolSize:核心线程数核心线程会一直存活,即使没有任务需要处理。当线程小于核心线程数时,即使现有的线程空闲,线程池也会优先创建新的工作线程来处理任务,而不是直接交给现有工作线程来处理。当allowCoreThreadTimeout被设置为true时,核心线程会超时退出,参数默认为false,所以核心在创建后不会退出。2.maxim...转载 2018-07-11 18:16:31 · 707 阅读 · 0 评论 -
【java】内存可见性和原子性:Synchronized和Volatile的比较
在说明Java多线程内存可见性之前,先来简单了解一下Java内存模型。 (1)Java所有变量都存储在主内存中 (2)每个线程都有自己独立的工作内存,里面保存该线程的使用到的变量副本(该副本就是主内存中该变量的一份拷贝) (1)线程对共享变量的所有操作都必须在自己的工作内存中进行,不能直接在主内存中读写 (2)不同线程之间无法直接访问其他线程工作内存中的变量...转载 2018-07-13 08:56:14 · 156 阅读 · 0 评论