1.什么多线程?
多线程,是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。多线程是为了同步完成多项任务,不是为了提高运行效率,而是为了提高资源使用效率来提高系统的效率。多线程是在同一时间需要完成多项任务的时候实现的。
2.多线程的优缺点:
优点:
1)、多线程技术可以加快程序的运行速度,使程序的响应速度更快,因为用户界面可以在进行其它工作的同时一直处于活动状态
2)、可以把占据长时间的程序中的任务放到后台去处理,同时执行其他操作,提高效率
3)、当前没有进行处理的任务时可以将处理器时间让给其它任务
4)、可以让同一个程序的不同部分并发执行,释放一些珍贵的资源如内存占用等等
5)、可以随时停止任务
6)、可以分别设置各个任务的优先级以优化性能
缺点:
1)、因为多线程需要开辟内存,而且线程切换需要时间因此会很消耗系统内存。
2)、线程的终止会对程序产生影响
3)、由于多个线程之间存在共享数据,因此容易出现线程死锁的情况
4)、对线程进行管理要求额外的 CPU开销。线程的使用会给系统带来上下文切换的额外负担。
3.创建多线程 :
方式一:如何实现多线程
- 定义线程类,继承Thread类实现
- 重写run方法,定义线程以后干嘛?
- new 一个新线程对象
- 调用Start() 执行run
/*
实现目标:多线程创建方式一。继承Thread类实现
*/
public class ThreadDemo {
public static void main(String[] args) {
//3.new 一个新线程对象
Thread t = new MyThread();
//4.调用Start() 执行run
t.start();
for (int i = 0; i < 5; i++) {
System.out.println("主线程执行输出:" + i);
}
}
}
//1.定义一个线程类继承Thread类
class MyThread extends Thread {
//2.重写run方法,定义线程以后干嘛?
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println("子线程执行输出:" + i);
}
}
}
运行结果:子主线程同时运行
关于为什么不直接调用run方法,而是调用Start()启动线程
/*
1、直接调用run方法,会当做一个普通调用执行,相当于单线程执行子线程
2.调用start(),才是启动新的多线程,同时执行;
*/
方式一优缺点:
优点:代码简单;
缺点:存在单继承的局限性,线程类继承Thread之后,不能继承其他类,不便于扩展;