Java学习 并发
Java 并发
记录在各个地方学到的小知识, 起常看常新和弥补作用
并发知识索引:
什么是线程, 线程的状态, 线程可以干嘛, 为了解决线程干嘛带来的新问题的解决方案.
《Java 核心技术》
Runnable 状态是因为: 此时线程可能正在运行也可能没在运行, 要由操作系统为线程提供具体的运行时间, 线程调度的细节依赖于操作系统提供的服务.
线程的状态: New、Runnable、Terminated、+ 并发所产生的三个condition: Blocked、Waiting、Timed Waiting.
在 Race Condition 竞态条件下, 同步的几种锁使用方式:
- synchronized, 不够灵活
- ReentrantLock, 灵活, 需要在 finally unlock
- 使用object 自带的内部锁 锁自己(flink 常用) synchronized (lock) {}
条件对象的使用需要注意: if a > 0 , xxx , 这两步中间可能就导致不一致, 可以用 Condition 来操作
如果是实例字段的话使用 volatile 关键字.
stop 方法不会执行 finally 语句块, 导致一些锁得不到释放, 因此不再使用.