俩个,main线程和gc线程1.2 java不是真的可以开辟线程
底层c++ 调用本地方法1.3 并发、并行
并发:模拟多线程 并行:多个线程同时执行1.4 线程有几个状态
6个,源码Thread.Status枚举类型 NEW:创建 RUNNABLE: 运行 BLOCKED:阻塞 WAITING:等待 TIMED_WAITING:超时等待 TERMINATED:终止1.5 wait和sleep
wait:是Object类,会释放锁,必须在同步代码块使用,不需要捕获异常 sleep:是线程类,不会释放锁,可以在所有地方使用,需要捕获异常1.6 synchronized和Lock
1. synchronized是关键字,lock是类 2. syn无法判断锁状态,lock可以 3. syn自动释放,lock需要手动 4. syn锁住的线程会一直等待,lock则不会 5. syn是可重入锁不可中断,非公平锁,lock是可为公平和非公平(入参中传入true和false) 6. syn用于少量代码,lock推荐大量代码使用
细节
syn中线程等待不要用if,得while



