1. 进程和线程
a. 进程
所谓的进程其实就是一个程序或服务运行的过程在操作系统中的体现,操作系统中一个独立运行的程序或服务就是一个进程。
b. 多进程
现代的操作系统都可以支持同时运行多个程序和服务,体现在进程上,就是多个进程可以并行的执行,这称之为操作系统支持多进程。
c. 线程
一个进程的内部还可以划分出多个并行执行的过程,称之为在进程内部存在线程。
d. 多线程
一个进程内部可以存在多个线程,且这些线程可以并行的执行,这样的机制称之为进程支持多线程。
**计算中只有一个cpu,实际上同一个时刻,只能处理一个运算,但是由于cpu的运算速度非常的快,通过不停的切换处理的任务,从而使多个进程 多个线程 依次都能得到处理,处理的很快,切换的也很快,在人看来似乎这些进程和线程都在同时执行
**jvm本身也是进程,可以在其中开辟多个线程执行并发的任务,这样的开发多个线程的技术就称之为java的多线程技术。
Java中的多线程
1. Thread类
java是面向对象的语言,万物皆对象,在java中也是用对象来代表底层的物理线程,来方便我们操作。这样的线程对象归属于Thread类。
java.lang
类 Thread
2. 重要API
构造方法:
构造方法摘要
Thread()
分配新的 Thread 对象。
Thread(Runnable target)
分配新的 Thread 对象。
重要方法:
void start()
使该线程开始执行;Java 虚拟机调用该线程的 run 方法。
3. 启动线程的两种方式
a. 启动线程的方式1:
i. 创建一个类 实现Runnable接口 在其中的run()方法中编写启动的线程要执行的代码
ii. 创建改类的对象,传入Thread的构造方法 ,创建Thread对象
iii. 调用Thread对象的start()方法,启动线程
b. 启动线程的方式2:
i. 写一个类继承Thread,覆盖其中的run()方法,在其中编写启动的线程要执行的代码
ii. 创建该Thread类的子类的对象
iii. 调用Thread类的子类的对象的start()方法,启动线程
**两种线程启动方式的比较:
java是单继承的,继承的方式创建线程,将会占用了extends关键字,这在类本身需要继承其他类的情况下无法使用
java是多实现的,实现接口的数量没有线程,所以实现接口创建线程的方式并不会受到单继承的线程
4. 线程并发的细节
a. 主线程和其他线程比起来,唯一特殊的地方是它是程序的入口,除此之外没有任何高低 先后 差别。
b. 多个线程并发的过程中,线程在不停的无序的争夺cpu,某一时刻哪个线程抢夺到,哪个线程就执行,由于cpu运行速度非常快,看起来似乎这些线程都在并发的执行。
c. 线程是在进程内部执行的,进程内部只有任意一个非守护线程存活,进程就不会结束。
5. 关闭线程
stop方法可以显示的命令线程立即停止,但此方法具有固有的不安全性,所以目前已经被过时 废弃掉了。不要去使用。
void stop()
已过时。 该方法具有固有的不安全性。
在废弃掉stop方法之后,jdk中也没有提供任何其他类似的方法,官方的建议是,应该由程序本身提供相应的开关,来控制线程的运行和停止。通常由一个静态的布尔类型来作为这种开关。
6. Thread中的其他常用方法
线程优先级相关的字段,本质上是int类型的常量值,取值范围为1 - 10 ,值越大优先级越高
字段摘要
static int MAX_PRIORITY
线程可以具有的最高优先级。
static int MIN_PRIORITY
线程可以具有的最低优先级。
static int NORM_PRIORITY
分配给线程的默认优先级。
static Thread currentThread()
返回对当前正在执行的线程对象的引用。
long getId()
返回该线程的标识符。
String getName()
返回该线程的名称。
void setName(String name)
改变线程名称,使之与参数 name 相同。
int getPriority()
返回线程的优先级。
void setPriority(int newPriority)
更改线程的优先级。
Thread.State getState()
返回该线程的状态。
static void sleep(long millis)
在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。
多线程概述1. 进程和线程 a. 进程 所谓的进程其实就是一个程序或服务运行的过程在操作系统中的体现,操作系统中一个独立运行的程序或服务就是一个进程。 b. 多进程 现代的操作系统都可以支持同时运行多个程序和服务,体现在进程上,就是多个进程可以并行的执行,这称之为操作系统支持多进程。 c. 线程 一个进程的内部还可以划分出多个并行执行的过程,称之为在进程内部存在线程。 d. ...