目录 1. 并发编程的两个问题 2 CPU 缓存模型 2.1 CPU 和 主存 2.2 CPU Cache 2.3 CPU如何通过 Cache 与 主内存交互 2.4 CPU 缓存一致性问题 3 Java内存模型(JMM…
分类:java并发
JUC的Condition注意事项
前言 在看Condtion时候总是感觉有点晕的感觉,总结一点别的文章没有提到的地方。 正文 作用: Condition主要是为了代替Object 监视器方法(wait、notify 和 notifyAll)。Condit…
java多线程7.使用线程池
只有当任务都是同类型并且相互独立时,线程池的性能才能达到最佳。如果将运行时间较长的与运行时间较短的任务混合在一起,那么除非线程池很大,否则将可能造成拥塞,如果提交的任务依赖于其他任务,那么除非线程池无线大,否则将可能造成…
Java 线程 — ThreadPoolExecutor
线程池 线程池处理流程 核心线程池:创建新线程执行任务,需要获取全局锁 队列:将新来的任务加入队列 线程池:大于corePoolSize,并且队列已满,小于maxPoolSize,创建新的worker执行任务 线程池已满…
Java多线程系列--“JUC锁”10之 CyclicBarrier原理和示例
CyclicBarrier简介 CyclicBarrier是一个同步辅助类,允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。因为该 barrier 在释放等待线程后可以重用,所…
[转]Java 对象锁-synchronized()与线程的状态与生命周期
线程的状态与生命周期 Java 对象锁-synchronized() ? 1 2 3 4 synchronized (someObject){  …
Java多线程---CAS和锁优化
一 .CAS 在学习java.util.concurrent(简称JUC)包下的类时,了解到了CA…
2015第15周六Java线程池
Java里面线程池的顶级接口是Executor,但是严格意义上讲Executor并不是一个线程池,而只是一个执行线程的工具。真正的线程池接口是ExecutorService。 比较重要的几个类: ExecutorServ…
金三银四跳槽季,Java面试题大纲
跳槽时时刻刻都在发生,但是我建议大家跳槽之前,先想清楚为什么要跳槽。切不可跟风,看到同事一个个都走了,自己也盲目的开始面试起来(期间也没有准备充分),到底是因为技术原因(影响自己的发展,偏移自己规划的轨迹),还是钱给少了…
java多线程之死锁
一、死锁是什么? 举个例子:两个人一起吃饭,每个人都拿了一只筷子,双方都在等待对方将筷子让给自己,结果两个人都吃不了饭。这种情况和计算机中的死锁情况很相似。 假设有两个线程,互相等待对方释放占有的锁,但是释放锁的条件又不…
Java中锁的内存语义
我们都知道,Java中的锁可以让临界区互斥执行。锁是Java并发编程中最重要的同步机制,锁除了可以让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息。下面是锁的释放-获取的代码: Class …
Java多线程——加锁机制
Java的锁分为内置锁和显式锁。内置锁在我们平时使用synchronized关键字的时候获取。而本文所提到的显式锁则是通过获取java.util.concurrent.locks包下面的ReentrantLock类或者R…