Java多线程编程学习

2023-12-17 21:32:18

1?线程的概念

? ? ? ? 多线程是指同一个程序同时存在多个“执行体”,它们可以同时工作

? ? ? ? 1.1 进程的概念

? ? ? ? 一次程序的每一次运行都叫做进程(一个进程可以包含多个线程

? ? ? ? 1.2 线程的概念

? ? ? ? 多线程是指一个程序中多段代码同时并发进行

????????1.3 主线程的概念

? ? ? ? JavaMain中的线程就叫做主线程

? ? ? ? 在Main中执行再创建的线程叫做其他线程

????????运行结果:

2?Thread类与Runnable接口

? ? ? ? 再说Thread类之前,我们可以想一想,有没有一种办法能够让三个线程同时进行呢

? ? ? ? 第一种方法??继承Thread类

? ? ? ? 这个子类应该重写Thread类中的run()方法,子类的对象需要调用start()来启动

? ? ? ? ?练习:创建2个线程,一个线程负责输出英文字母表,另一个线程负责输出希腊字母表。通过继承Thread类实现创建线程。

????????第二种方法??实现Runnable接口

? ? ? ? 通常使用Thread(Runnable target)构造方法创建线程,实现Runnable接口的类可以用来创建线程

?????????练习:创建2个线程,一个线程负责输出英文字母表,另一个线程负责输出希腊字母表。通过实现Runnable接口创建线程。

3 线程的生命周期

????????3.1?线程的生命周期

? ? ? ? 线程的生命周期是指线程从产生到消亡的过程,一个线程无论在任何时间都处于某种线程状态

????????练习 ? ? 创建3个线程:老师,李四,王五,其中李四准备睡10分钟后再开始听课,王五准备睡45分钟再开始听课。老师在输出3句“上课”后,吵醒休眠的线程李四,李四被吵醒后,负责再吵醒休眠的线程王五。

? ? ? ? 3.2 线程同步

????????线程同步就是多线程都需要使用一个synchronized修饰的方法,多个进程同时访问一个变量,并且多个进程要修改这个变量的问题,要进行线程同步处理。

?????????练习 ? ? 每学期开学,教材科需要购入和出售教材。创建2个线程,一个线程负责购入教材,另一个线程负责向学生出售教材。两个线程都要操作教材科的教材种类及册数数据。 ? ? 要求通过线程同步,保证一个线程操作完之后,另一个线程再执行。

????????3.3?协调同步线程

? ? ? ? wait()方法中断方法的执行,让本线程等待,允许其他线程使用这个同步方法。

? ? ? ? notifyAll()通知所有的由于使用这个同步方法而处于等待的线程结束等待。曾中断的线程就会从刚才的中断处继续执行这个同步方法,并遵循“先中断先继续”的原则。

????????notify()方法只是通知处于等待中的线程的某一个结束等待。

文章来源:https://blog.csdn.net/axxdxzz/article/details/135048893
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。