1.juc基本概念
1、概述
java uitl concurrent包下
相关包:
-
java.util.concurrent
-
java.util.concurrent.atomic
-
java.util.concurrent.locks
-
Condition
-
Lock
-
ReentrantLock 可重入锁(常用)
-
ReentrantReadWriteLock.ReadLock 读锁
-
ReentrantReadWriteLock.WriteLock 写锁
-
-
ReadWriteLock
-
-
java.util.function 函数式编程
2、进程和线程
java默认线程:main和Gc
java并不能真的开启线程,最后需调用本地方法,本地方法调用c++,java无法直接操作硬件
private native void start0();
- 进程:一个程序包含多个进程,是资源分配的单位
- 线程:一个进程包含多个线程,是cpu调度和执行的单位
- Thread,Runable,Callable
2.1、并发和并行
- 并发:多线程操作同一个资源
- 单核cpu下快速交替
- 并行:
- 多核cpu下多个线程可以同时执行
- cpu核数:Runtime.getRuntime().availableProcessors();
并发编程本质:充分利用cpu资源
public enum State {
NEW,//新建
RUNNABLE,//运行
BLOCKED,//阻塞
WAITING,//等待,死死等
TIMED_WAITING,//超时等待
TERMINATED;//终止
}
2.2、wait和sleep
- wait
- Object类
- 会释放锁
- 在同步代码块中使用
- 不需要捕获异常
- notify()或notifyAll唤醒
- sleep
- Thread类
- 不会释放锁,抱着锁睡觉
- 任何地方使用
- 需要捕获异常
- 到时自动醒来

浙公网安备 33010602011771号