线程
什么是线程:
线程就是程序中单独顺序的流控制。线程本身不能运行,它只能用于程序中
什么是多线程:
多线程则指的是在单个程序中可以同时运行多个不同的线程执行不同的任务.
线程是程序内的顺序控制流, 只能使用分配给程序的资源和环境
多线程编程的目的
多线程编程的目的,就是"最大限度地利用CPU资源",当某一线程的处理不需要占用CPU而只和I/O等资源打交道时,让需要占用CPU资源的其它线程有机会获得CPU资源。从根本上说,这就是多线程编程的最终目的。
线程与进程的区别
- 多个进程的内部数据和状态都是完全独立的,而多线程是共享一块内存空间和一组系统资源,有可能互相影响.
- 线程本身的数据通常只有寄存器数据,以及一个程序执行时使用的堆栈, 所以线程的切换比进程切换的负担要小。
单线程
- 当程序启动运行时,就自动产生一个线程,主方法main就在这个主线程上运行
- Java 中如果我们自己没有产生线程,那么系统就会给我们产生一个线程(主线程,main 方法就在主线程上运行), 我们的程序都是由线程来执行的。
多线程
如果在一个进程中同时运行了多个线程,用来完成不同的工作,则称之为“多线程”
多线程交替占用CPU资源,而非真正的并行执行
多线程好处
- 充分利用CPU的资源
- 简化编程模型
- 良好的用户体验
多线程的执行方式
并行执行
通常表示同一时刻有多条指令代码在处理器上同时运行
往往需要多个处理器支持
·并发执行
表示在一个处理器中,操作系统为了提高程序的运行效率,将CPU的执
行时间分成多个时间片,分配给同一进程的不同线程
多个线程分享CPU时间,交替执行
宏观并行微观串行
主线程
Java程序启动时,一个线程立即随之启动,通常称之为程序的主线程
main()方法即为主线程入口
产生其他子线程的线程
必须最后完成执行,因为它执行各种关闭动作
线程的创建和启动
·Java中创建线程的两种方式
- 继承java.lang.Thread类
- 实现java.lang.Runnable接口
java.lang.Thread的常用方法
继承Thread类创建线程
自定义线程类继承自Thread类
重写run(方法,编写线程执行体
创建线程对象,调用start()方法启动线程
Thread类的run(方法是线程运行的起点