多线程
多线程

进程和线程
操作系统可以“同时”执行多个任务,每个任务就是进程;一个程序运行时就是一个进程。进程是操作系统的执行单元。
同一个进程可以“同时”并发执行多个任务,每个任务就是线程。线程是进程的执行单元。线程是程序中独立的,并发的执行流。
线程创建
继承Thread类 和 实现Runnable,Callable接口
-
定义 继承hread类 的子类 --> 重写父类Thread类的 run() 方法 (线程执行体) --> 创建Thread子类的实例, (即新建线程对象) --> 调用线程对象的start() 方法启动线程,(即线程就绪)
-
定义 实现Runnable接口 的类 --> 重写接口的 run() 方法 --> 创建 类的实例对象 target-- > new Thread( target ).start()
-
定义 实现Callable接口 的类 --> 重写接口的 call( V ) 方法 -->新建Callable对象 --> 使用Runnable接口的 实现类 FutureTask
包装 Callable对象 target--> new Thread(target).start()
线程的生命周期

控制线程
- join()
当前线程的执行流 调用到 其他线程的join() 方法时,当前线程将被阻塞,直到加入的join()方法的 其他线程执行完。
- daemon thread
守护线程,后台线程,服务于其他线程的线程。当所有前台线程死亡,后台线程才会死亡。如gc
- 线程睡眠sleep()、线程礼让yiled() 、线程优先级
线程同步
- syncronized 关键字
syncronized可以修饰代码块和方法:
// 同步代码块:
syncronized(obj){ // obj为同步监视器的锁定,一般为各线程的共享资源
//同步代码块
}
//......
// 同步方法
public syncronized void method(){
// 同步方法
}
- 同步锁Lock
常用的是Lock的实现类 ReentrantLock(可重用锁);可以显式的加锁,释放锁。

!!!坚持记录博客!!!

浙公网安备 33010602011771号