首页 > 代码库 > 多线程
多线程
1.进程:正在进行的程序
线程:进程中的执行单元(执行情景、执行路径)
进程和线程的关系:进程中可以多个线程,最少有一个。
多线程:进程中有多条线程执行
2.线程的创建方式:
第一种:1.定义一个类,继承Thread类
2.重写Thread类当中的run方法
3.创建Thread子类的对象
4.调用线程对象的start方法
第二种:1.定义一个类,实现Runnable接口
2.重写Runnable接口中run方法,把实现内容写在run方法中
3.创建接口的实现类对象
4.创建Thread对象,将Runnable接口实现类的对象作为Thread类构造函数的参数
5.调用Thread类对象的start方法,开启线程
两种创建方式之间的区别:
1.一种是继承Thread类,一种是实现Runnable接口
2.一种是直接用类的对象调用start方法,一种是需要将Runnable接口的实现类作为Thread类的构造函数,然后用
Thread类的对象调用start他方法
Thread类子类的对象和Runnable实现类的对象有什么区别:
Thread类子类对象是线程对象,Runnable实现类对象是任务对象
3.线程不安全因素造成的原因:
多个线程同时操作共享数据
操作共享数据的代码有多条
线程安全问题的解决方案:
保证一个线程在执行多条操作共享数据时,其他程序不参与运算
同步的前提:
同步中有多个线程
多线程使用同步时,用的是同一个对象
4.同步函数和同步代码块有什么区别:
同步函数比同步代码块写法简单
同步函数使用的锁固定是this,同步代码块使用的锁可以使任意类的对象
同步函数的锁是什么: 当前类的对象this
静态同步函数的锁是什么: 当前类的字节码文件对象( 类名.class )
5.分析单例模式的线程问题:
有共享数据时,同时操作共享数据的语句有多条
6.死锁造成的原因,以及如何避免
原因是同步的嵌套,两个同步使用的不是同一把锁,避免方式就是减少同步的嵌套
7.线程的生命周期(线程的常见状态)
1.新建-----当创建Thread类的一个实例时,此线程进入新建状态
2.就绪-----线程已经被启动,具备执行资格,没有执行权利
3.阻塞-----由于某种原因导致正在运行的线程暂停
4.运行-----获得CPU执行资格,也具备CPU执行权利
5.死亡-----线程执行完毕,进入死亡状态
多线程