JUC学习(1) 线程和进程
2.线程和进程
线程,进程
进程:一个程序。
一个进程往往可以包含多个线程,至少包含一个!
Java默认有2个线程
- main
- GC
对于Java而言,三种开启线程的方式
- Thread
- Runnable
- Callable
Java真的可以开启线程吗
- 不可以,只能通过本地方法调用,Java无法操作硬件
并发,并行
- 并行:依赖逻辑处理器的数量
- CPU多核,多个线程可以同时执行,快速交替
- 并发(多线程操作同一个资源):依赖cpu的速度
- CPU一核,模拟出来多条线程,快速交替
并发编程的本质:充分利用CPU的资源
线程有几个状态
线程有6个状态
- NEW 新生
- RUNNABLE 运行
- BLOCKED 阻塞
- WAITING 等待,死死的等待
- TIMED_WAITING 超时等待
- TERMINATED 终止
wait/sleep 区别
- 1.来自不同的类
- 2.关于锁的释放
- wait会释放锁
- sleep不会释放锁
- 3.使用的范围不同
- wait:必须在同步代码中
- sleep:可以在任何地方睡
- 4.是否需要捕获异常
- wait需要捕获或声明抛出
InterruptedException
。 - sleep也需要捕获或声明抛出
InterruptedException
。
- wait需要捕获或声明抛出