1. 多线程是什么?
线程就是程序中单独顺序的流控制。线程本身不能运行,它只能用于程序中。多线程则指的是在单个程序中可以同时运行多个不同的线程执行不同的任务。
2. 为什么使用多线程?
多线程编程的目的,就是"最大限度地利用CPU资源",当某一线程的处理不需要占用CPU,而只和I/O等资源打交道时,让需要占用CPU资源的其它线程有机会获得CPU资源。
3. 线程与进程有什么不同?
1). 资源是否独立:多个进程的内部数据和状态都是完全独立的,而多线程是共享一块内存空间和一组系统资源,有可能互相影响。线程本身的数据通常只有寄存器数据,以及一个程序执行时使用 的堆栈,
所以线程的切换比进程切换的负担要小。
2). 切换成本:多线程程序比多进程程序需要更少的管理费用。进程是重量级的任务,需要分配给它们独立的地址空间。进程间通信是昂贵和受限的。进程间的转换也是很需要花费的。另一方面,线程是
轻量级的选手。它们共享相同的地址空间并且共同分享同一个进程。线程间通信是便宜的,线程间的转换也是低成本的。
4. 骨架
Thread 类也实现了 Runnable 接口,实现了 Runnable 接口中的 run 方法
5. 多线程怎么用?
1). 线程的实现有两种方式,第一种方式是继承 Thread 类,然后重写 run 方法;第二种是实现 Runnable 接口,然后实现其 run 方法。
2). 将我们希望线程执行的代码放到 run 方法中,然后通过 start 方法来启动线程,start方法首先为线程的执行准备好系统资源,然后再去调用run方法。当某个类继承了Thread 类之后,该类就叫做一个线程类。
6. 使用注意事项
1). 多线程的数量应根据CPU核数以及IO操作的频繁程度而定。并不是线程越多,效率越高。
2). 停止线程的方式:不能使用 Thread 类的 stop 方法来终止线程的执行。 一般要设定一个变量,在 run 方法中是一个循环,循环每次检查该变量,如果满足条件则继续执行,否则跳出循环,线程结束。
7. 优化
1). 推荐自定义线程名称
8. 监控