- 多线程: 多个线程并发的执行机制
并发:能处理多个同时性活动的能力;是CPU同时(不是真正地同时,CPU在多个程序间快速切换)运行多个程序。
并行:并发则不一定并行,也就是说并发事件之间不一定要同一刻发生;是每一个CPU运行运行一个程序(多核的CPU)。
多线程的生命周期:
出生:通过new 创建线程(1.类继承Thread 类,复写run方法,线程代码在里边;2.类实现Runnable接口,创建Runnable的对象作为实际参数传递给新建的线程)
就绪:start 方法开启多线程,等待CPU来调度
运行:获得CPU执行权,执行程序
等待:wait 方法等待...
休眠:sleep(时间)
阻塞:是一种临时状态,进入wait、sleep后都会进入到该状态
死亡;线程执行完后死亡。
wait与sleep区别:
sleep自动唤醒,而wait需要通过方法notify notifyall唤醒
停止线程的方法:
1.定义循环结束标记 2.interrupt();
- 线程的安全
同步代码块:
synchronized(对象) { 需要被同步的代码 }
需要同步?那些语句操作多线程的共享数据,就同步那些代码
同步的前提:
必须有两个及以上的线程;
多个线程使用的是同一个锁。
注:在同一个Object类中,无论几个代码块,同一时刻只有一个被执行(互斥锁)
类锁: 当前类的字节码文件(类名.class)