一、原理
进程:一个运行中的应用程序,一个运行的程序在内存中占用的一片区域,也可叫做一个任务;
线程:线程是进程中的一个执行单元,负责调度程序的执行;
一个进程至少需要一个线程,也可能有多个线程,多线程任务,多线程”同时“执行,叫做并行;
多线程是否提高了效率?答:否,而且如果线程开启太多,反倒会降低效率;
但是,为了提高用户体验度,并且因为现在内存越来越大,cpu处理能力越来越强,所以在合理的范围内,多开一定的线程是没关系的;
二、线程的实现方式(两种方式)
1、继承Thread对象
a.继承Thread对象
b.Thread对象中有一个run方法 重写run()方法->run方法中写的代码叫 线程任务
c.创建继承了Thread类的子类的线程对象
d.调用线程对象的start()方法,启动线程,并且java虚拟机调用该线程的run()方法
2、实现Runnable接口
a.实现Runnable接口
b.实现run()方法->线程任务放入到run方法中
c.创建实现了Runnable接口实现类的对象
d.创建线程类,并将实现了Runnable接口实现类的对象,通过线程类的构造方法注入进来
e.调用线程对象的start()方法。启动线程,调用注入对象的run方法,从而在一个新开启
的线程中,执行实现类对象的线程任务
为什么实际开发中使用实现Runnable接口的方式?
(1)继承Thread类,具备单一继承的局限性
(2)继承Thread类,线程对象和线程任务绑定一起了,不利于解耦
run方法和start方法的区别
1.run方法不启动线程,start方法启动线程,并自动调用run方法
原文:https://www.cnblogs.com/sunyi2010/p/8981591.html