java并发

java并发_第1张图片
JAVA并发编程架构体系

java并发_第2张图片
一张图看懂java线程间的状态切换.jpg

1.并发编程中的锁

并发编程中的各种锁
java高并发锁的3种实现
Java并发机制及锁的实现原理

2.线程池核心线程数一般定义多少,为什么?

CPU密集型任务: 尽量使用较小的线程池,一般为CPU核心数+1。 因为CPU密集型任务使得CPU使用率很高,若开过多的线程数,只能增加上下文切换的次数,因此会带来额外的开销。
IO密集型任务: 可以使用稍大的线程池,一般为2*CPU核心数。 IO密集型任务CPU使用率并不高,因此可以让CPU在等待IO的时候去处理别的任务,充分利用CPU时间。
参考:别再说你不懂线程池——做个优雅的攻城狮

3.自增线程安全的int

AtomicInteger,一个提供原子操作的Integer的类。在Java语言中,++i和i++操作并不是线程安全的,在使用的时候,不可避免的会用到synchronized关键字。而AtomicInteger则通过一种线程安全的加减操作接口。
参考: int变量操作与线程安全

你可能感兴趣的:(java并发)