线程 Thread
进程: 正在进行的程序 一个进程中至少有一个线程
进程是系统进行资源分配和调用的独立单位,每一个进程都有它自己的内存空间和系统资源
多进程:可以同时干很多事情,但不是同时进行,而是在程序间高效切换。
线程:在同一个进程中可以执行多个任务,而每一个任务,就是一个线程,是程序的执行单元,执行路径,是程序使用cpu的最基本单位。
单线程:程序只有一条执行路径
多线程:程序有多条执行路径
多线程存在的意义:不是提高程序的执行速度,而是为了提高应用程序的使用率。
并发:一个处理器同时处理多个任务(逻辑上的同时发生)
并行:多个处理器或是多核的处理器同时处理多个不同的任务 (物理上的同时发生)
Java 程序的运行原理:
由Java命令启动JVM,JVM启动就相当于启动了一个进程。
接着由该进程创建了一个主线程去调用 main 方法。
JVM 虚拟机的启动是单线程的还是多线程的?
多线程的。
原因是垃圾回收线程也要先启动,否则很容易会出现内存溢出。
现在的垃圾回收线程加上前面的主线程,最低启动了两个线程,所以,JVM的启动其实是多线程的。
线程的生命周期:
新建:创建一个线程对象
就绪:调用 start()方法后,线程有执行资格,但没有获取到执行权(也就是没有获取到CPU内存资源)
运行:获取到执行权(获取到CPU内存资源)
阻塞:没有执行资格也没有执行权,一般是调用方法 suspend()、sleep()、wait()、join()方法后线程进入阻塞状态
死亡:run()方法结束,或线程被中断(调用方法stop()或destroy())
如何实现多线程:
方式1:继承 Thread 类
A:自定义类 MyThread 继承 Thread 类。
B:MyThread 类里面重写 run()。
C:创建对象。
D:启动线程 使用 start()方法。
方式2:实现 Runnable 接口
A:自定义类 MyRunnable 实现 Runnable 接口
B:重写 run()方法
C:创建 MyRunnable 类的对象
D:创建 Thread 类的对象,并把MyRunnable 类的对象作为构造参数传递
java线程基础总结
两种实现线程的方法的区别:
实现 Runnable 接口可以避免 Java 中单一继承的局限性;
适合多个相同程序的代码去处理同一个资源的情况,把线程同程序代码数据有效的分离。
增加程序的健壮性,代码可以被多个线程共享,代码和数据独立。
继承 Thread : 线程代码存放在 Thread 子类run()方法中。
实现 Runnable : 线程代码存放在 Runnable 接口的子类的run()方法中。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/1379.html