java-Juc并发编程系列(一):线程和进程
第1节:线程和进程
1.理论整理
- juc是java.util.concurrent的缩写,也就是并发工具包.;
- Runnable没有返回值,效率比Collable要低;
- 进程:一个程序,QQ.exe,Music.exe程序集合;
- 一个进程往往可以包含多个线程,至少包含一个!
- java默认有2个线程:main;GC(垃圾回收)
- Java只能通过本地方法去开启线程,java无法直接操作硬件,实际上是调用的底层的C++;
- 并发–多线程同时操作同一个资源;
CPU一核,模拟出多条线程,天下武功,唯快不破,快速交替模拟出的假象; - .并行–多个人一起行走
CPU多核, 多个线程可以同时执行;线程池 - 并发编程的本质:充分利用CPU的资源
- 线程有几个状态:新生NEW - 运行RUNNABLE - 阻塞BLOCKED -等待WAITING – 暂时等待TIMED_WAITING --终止TERMINATED
- wait和sleep区别:
(1).来自不同的类: wait–>Object;Sleep–>Thread
(2)关于锁的释放:wait会释放锁;sleep抱着锁睡觉,不会释放;
(3)使用范围不同:sleep可以在任何地方睡;wait必须在同步代码块中使用
(4)是否需要捕获异常:wait不需要(现在也需要了)捕获异常;sleep必须要捕获异常,因为它可能会发生超时等待的情况
2.实践
声明:本系列是"狂神说java"教程的个人学习笔记,无意侵权~