Java基础复习--多线程

一.线程的简单概念
线程:指一个任务从头到尾的执行流,是进程中的单个顺序控制流,是一条执行路径。
单线程:程序只有一条执行路径。
多线程:程序有多条执行路径。

多进程的意义:提高CPU的使用率。
多线程的意义:提高应用程序的使用率。

注意两个词汇的区别:

并行:指逻辑上同时发生,在某一个时间内同时运行多个程序。
并发:指物理上同时发生,在某个时间点内同时运行多个程序。

二.线程的生命周期
新建:从新建一个线程对象到程序start() 这个线程之间的状态,都是新建状态;

就绪:线程对象调用start()方法后,就处于就绪状态,等到JVM里的线程调度器的调度;

运行:就绪状态下的线程在获取CPU资源后就可以执行run(),此时的线程便处于运行状态, 运行状态的线程可变为就绪、阻塞及死亡三种状态。

等待/阻塞/睡眠:在一个线程执行了sleep(睡眠)、suspend(挂起)等方法后会失去所占有 的资源,从而进入阻塞状态,在睡眠结束后可重新进入就绪状态。

死亡:run()方法完成后或发生其他终止条件时就会切换到终止状态。

三.创建线程的方法
详情参照链接:http://www.cnblogs.com/yjboke/p/8919090.html

1、继承Thread类:

扫描二维码关注公众号,回复: 5311308 查看本文章

定义类继承Thread;

重写Thread类中的run方法;

调用线程的start方法:

该方法有两步:启动线程,调用run方法。

2、实现Runnable接口:

接口应该由那些打算通过某一线程执行其实例的类来实现。类必须定义一个称为run 的无参方法。

A.定义类实现Runnable接口

B.覆盖Runnable接口中的run方法,将线程要运行的代码放在该run方法中。

C.通过Thread类建立线程对象。

D.将Runnable接口的子类对象作为实际参数传递给Thread类的构造函数。自定义的run方法所属的对象是Runnable接口的子类对象。所以要让线程执行指定对象的run方法就要先明确run方法所属对象

E.调用Thread类的start方法开启线程并调用Runnable接口子类的run方法。

3、通过Callable和Future创建线程:

A.创建Callable接口的实现类,并实现call()方法,改方法将作为线程执行体,且具有返回值。

B.创建Callable实现类的实例,使用FutrueTask类进行包装Callable对象,FutureTask对象封装了Callable对象的call()方法的返回值

C.使用FutureTask对象作为Thread对象启动新线程。

D.调用FutureTask对象的get()方法获取子线程执行结束后的返回值。

四.线程的调度和优先级问题
A:线程的调度

a:分时调度

b:抢占式调度 (Java采用的是该调度方式)

B:获取和设置线程优先级

a:默认是5

b:范围是1-10

C.“高优先级线程”会优先于“低优先级线程”执行。

Thread提供了setPriority(int newPriority)和getPriority()方法来设置和返回线程优先级。

五.线程的控制(常见方法)
参考链接:https://blog.csdn.net/lyj4495673/article/details/80980476

     A:休眠线程
          sleep(long millis)在指定的毫秒数内让正在执行的线程休眠。
          sleep(long millis,int nanos)在指定的毫秒数加指定的纳秒数内让正在执行的线程休眠。

     B:加入线程
          Thread.join();

     C:礼让线程
          Thread.yield();

     D:后台线程

     E:终止线程(掌握)

六.如何解决线程安全问题
A.判断一个程序因为那些原因会有线程安全问题

  a.是否是多线程环境

  b.是否有共享数据

 c.是否有多条语句操作共享数据

B.解决思路

 a和b的问题我们改变不了,我们只能在c上做文章。

 Java给我们提供了:同步机制。

C.具体内容,参考链接:

a.较为简洁:https://www.cnblogs.com/leipDao/p/8295766.html

b.较为全面:https://blog.csdn.net/yz2015/article/details/79436123

最后再推荐一篇总结比较全面的博文:https://www.cnblogs.com/yjd_hycf_space/p/7526608.html

猜你喜欢

转载自blog.csdn.net/weixin_43815050/article/details/87001865