day11线程


实验楼
菜鸟教程
Java 多线程技术实战

01 线程的创建

  • 通过实现 Runnable 接口
  • 通过继承 Thread 类本身
  • 通过 Callable 和 Future 创建线程

02 线程的生命周期

生命周期

03 线程的调度

线程调度

  • 分时调度

所有线程轮流使用 CPU 的使用权,平均分配每个线程占用 CPU 的时间。

  • 抢占式调度

优先让优先级高的线程使用 CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性),Java使用的为 抢占式调度。
* 设置线程的优先级
* 抢占式调度详解
大部分操作系统都支持多进程并发运行,现在的操作系统几乎都支持同时运行多个程序。
比如:现在我 们上课一边使用编辑器,一边使用录屏软件,同时还开着画图板,dos窗口等软件。
此时,这些程序是 在同时运行,”感觉这些软件好像在同一时刻运行着“。
实际上,CPU(中央处理器)使用抢占式调度模式在多个线程间进行着高速的切换。
对于CPU的一个核而 言,某个时刻,只能执行一个线程,而 CPU的在多个线程间切换速度相对我们的感觉要快,看上去就是 在同一时刻运行。 其实,多线程程序并不能提高程序的运行速度,但能够提高程序运行效率,让CPU的 使用率更高。

在这里插入图片描述

04 线程的同步

线程同步
** Synchronized **

关键字 synchronized 可以修饰方法或者以同步块的形式来进行使用,它确保多个线程在同一个时刻,只能有一个线程处于方法或者同步块中,保证了线程对变量访问的可见性和排他性。它有三种使用方法:

  • 对普通方式使用,将会锁住当前实例对象。
  • 对静态方法使用,将会锁住当前类的 Class 对象。
  • 对代码块使用,将会锁住代码块中的对象。

05 线程的通信

线程间通信方式有哪些?
线程间通信的几种实现方式

06 练习

基于Java的在线聊天室

猜你喜欢

转载自blog.csdn.net/hezuijiudexiaobai/article/details/107606971
今日推荐