Core Java 第十一章 多线程编程

本文详细介绍了Java中的线程和进程概念,线程优先级及其调度规则,重点讲解了线程同步机制如synchronized关键字的应用。还讨论了线程的创建方式,包括实现Runnable接口和继承Thread类,并提到了join方法的使用来确保线程执行顺序。此外,volatile关键字的作用和线程间通信的wait、notify方法也进行了阐述,最后提到了线程死锁问题及其避免策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.认识线程和进程

进程:一个执行的程序,允许你的计算机同时运行两个或更多的程序。比如支持你在运用文本编辑器的同时可以运行java编译器

线程:一个程序可以同时执行两个或者多个任务的功能。比如文本编辑器可以在打印的同时去格式化文本

 

2.线程优先级

线程的优先级是用来决定何时从一个运行的线程切换到另一个线程,这叫上下文转换

发生的规则:

1.主动放弃当前线程,最高优先级的线程被执行

2.高优先级线程可以抢占,只要高优先级线程要执行,就执行,这叫有优先权的多任务处理

 

优先级的设置范围:1 - 10。要返回一个线程的默认优先级,指定NORM_PRIORITY,通常为5,这些优先级都被定义为final型变量。

 

3.线程同步:管程

一旦一个线程进入了同步方法,那么其它线程则不能调用相同对象的同步方法

1.使用同步方法

使用synchronized关键字修饰的方法为同步方法

 

2.使用同步语句

不在方法前加入synchronized关键字修饰时,所使用的方法

4.管理线程的方法

 

5.主线程

Java程序一启动,就有一个线程,就是主程序

重要性:

1.它是产生其它子线程的线程

2.它必须最后完成执行,因为它执行各种关闭

 

可以通过Thread.currentThread()获取当前线程

 

显示顺序为 线程名称,优先级,线程组

 

6.创建线程

Java有两种方式创建线程

1.实现Runnable接口

2.继承Thread类

 

选择合适的方法,如果你不重载Thread类其它方法时,最好用实现Runnable接口

 

7.join

用于线程结束,当子线程结束之后,才会执行主程序后面的代码

 

8.volatile

用来确保running值在循环里每次都能得到验证,如果不用的话,Java可以自由的优化循环,running值会被存在CPU的一个寄存器中,每次重复不一定需要复检。

 

9.线程间通信

Java通过wait(),notify(),notifyAll()方法实现线程间通信。这些方法在对象中都是用final方法实现的,所有类都包含它们。仅在synchronized方法中才能被调用

 

10.死锁

有两个线程,一个线程进入a的管程,一个线程进入b的管程,如果第一个线程试图调用b的同步方法,那么就会被锁定,线程会一直处理等待。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值