进程和线程
进程是计算机中的程序关于某数据集合上的一次运动活动,是系统进行资源分配和调度的基本单位。
进程主要有两个概念:
- 进程是一个实体。
- 进程是一个“执行中的程序”。
线程是操作系统进行运算和调度的最小单位。一个进程由一个或者多个线程组成。
java中默认有两个线程:
- main函数线程
- GC线程(垃圾回收机制)
并行和并发的区别:
并行是指并排进行,同时实施或者进行。例如:赛跑,枪声一响所有人在同一时间开始奔跑。
并发是指不同的请求访问同一个资源。例如:只有一个蛋糕,但是所有小朋友都想吃,分给谁需要看具体情况。
java中创建线程的几种方式
- Thread
- Callable
- Runnable
注意:java实际上并不能开启线程
CPU核数的查看方法
- 在任务管理器中查看
2.使用availableProcessors()方法查看
并发编程的本质:充分利用CPU资源。
线程的六种状态
- NEW:新生状态
- RUNNABLE:运行状态
- BLOCKED:阻塞状态
- WAITING:等待(死等)
- TIMED_WAITING:超时等待(超时不再等待)
- TERMINATED:终止状态
wait/sleep的区别:
- 来自不同的类:wait => Object sleep => Thread
- 锁的释放:wait会释放锁,sleep不会释放锁
- 使用的范围:wait在同步方法块中使用,sleep在任何方法都可以使用