进程和线程
进程
一个程序,如QQ.exe,是程序的集合
一个进程往往可以包含多个线程,至少包含一个
java默认有两个线程,GC垃圾回收线程和Main线程
线程:一个进程中的各个功能
java无法真正的开启线程,因为java是运行在虚拟机上的,所以只能通过C++,通过native本地方法调用C++开启线程
private native void start0();
并发、并行
并发:多线程操作同一资源
- cpu单核情况下,通过快速交替模拟多条线程
并行:多个线程一起行走
- 只有在cpu多核情况下才可能产生并行,多个线程同时进行,cpu核数决定最大并行量。线程池
并发编程的本质就是想要充分利用电脑的cpu资源
线程有几个状态
java中的Thread.State重点列举了线程的状态,其中有6中状态
public enum State {
//新增
NEW,
//运行
RUNNABLE,
//阻塞
BLOCKED,
//等待,死等
WAITING,
//超时等待
TIMED_WAITING,
//终止
TERMINATED;
}
wait/sleep的区别
-
来自不同的类
wait->Object类
sleep->Thread类
-
关于锁的释放
wait会将锁释放、sleep不会释放锁,抱着锁睡觉 -
使用的范围是不同的
wait必须在同步代码块中使用
sleep可以在任何地方使用 -
是否需要捕获异常
wait不需要捕获异常,由于在同步代码块中,所以不存在超市等待的问题
sleep必须要捕获异常,可能会发生超时等待的问题只要是线程都会有一个异常,那就是中断异常
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/199849.html