一、多线程的理解
1,概念
(1)多线程:一个应用程序有多条执行路径
进程:正在执行的应用程序
线程:进程的执行单元,执行路径
单线程:一个应用程序只有一条执行路径
多线程:一个应用程序有多条执行路径
2:多进程的意义?
提高CPU的使用率
多线程的意义?
提高应用程序的使用率
3:Java程序的运行原理及JVM的启动是多线程的吗?
Java命令去启动JVM,JVM会启动一个进程,该进程会启动一个主线程。
JVM的启动是多线程的,因为它最低有两个线程启动了,主线程和垃圾回收线程。
4:线程的生命周期
5、线程的调度和优先级问题
线程的调度
分时调度
抢占调度
6、获取和设置线程优先级
默认是5
范围是1-10
7、线程的控制(常用方法)
休眠线程
加入线程
礼让线程
后台线程
终止线程
二、实现多线程的方式:有2种
方式一:继承Thread类
步骤
1、自定义类MyThread继承Thread类
2、在MyThread类中重写run()
3、创建MyThread类的对象
4、启动线程对象
关于run() 和start() 三个疑问??
1、为什么要重写run()方法?
run()里面封装的是被线程执行的代码
2、启用线程对象用的是哪个方法
start()方法
3、run()和start()方法的区别是什么?
run()直接调用仅仅是普通方法
start()先启动线程,再由JVM调用run()方法
方式二:实现Runnable接口
步骤:
1、自定义类MyRunnable实现Runnable接口
2、在MyRunnable里面的对象
3、创建MyRunnable类的对象
4、创建Thread类的对象,并把步骤3的对象作为构建参数传递
问题点:
有了方式1,为什么还要来一个方式二2呢?
优点1:可以避免由于java单继承带来的局限性
优点2:适合多个相同程序的代码去处理同一个资源的情况,把线程同程序的代码,数据有效分离,较好的体现了面向对象的设计思想