一、线程和进程的区别
(1)多线程:一个应用程序有多条执行路径
进程:正在执行的应用程序
线程:进程的执行单元,执行路径
单线程:一个应用程序只有一条执行路径
多线程:一个应用程序有多条执行路径
多进程的意义?
提高CPU的使用率
多线程的意义?
提高应用程序的使用率
二、Java程序的运行原理及JVM的启动是多线程的吗?
(1)java命令启动jvm虚拟机,jvm启动一个进程,该进程会启动一个主线程
(2)jvm的启动是多线程的,当vm启动时最少有两个线程启动,一个是主线程,一个是垃圾回收线程
三、多线程的实现方法
(1)继承Thread类
(2)实现Runnable
四、线程的生命周期
(1)新建线程
(2)线程就绪状态
(3)线程运行状态
(4)线程阻塞状态
(5)线程死亡
参考图
五、线程控制的主要方法
(1)获取线程的名称
A:当继承Thread是,直接getName()
B:实现Runnable接口时,使用
Thread.currentThread().getName()
(2)A:休眠线程 B:加入线程 C:礼让线程 D:后台线程 E:终止线程(掌握)
六、同步解决线程安全问题
A:同步代码块 synchronized(对象) { 需要被同步的代码; } 这里的锁对象可以是任意对象。synchronized(this){ ....... }
B:同步方法
把同步加在方法上。
这里的锁对象是thispublic void xxx(){ synchronized(this){ ....... } }
C:静态同步方法 把同步加在方法上。 这里的锁对象是当前类的字节码文件对象(反射再讲字节码文件对象)public static void xxx(){ synchronized(当前类.class){ ....... } }
七、线程安全问题的之买票(另外再写一个文章)