Java多线程

线程的两种创建方式

  • 创建一个Thread类,或者一个Thread子类的对象
  • 创建一个实现Runnable接口的类的对象
  • 一个类要想具有线程功能,需要继承Thread或实现Runnable接口

Thread类

Thread类是一个线程类,它实现了Runnable接口

常用构造方法

在这里插入图片描述

常用方法

在这里插入图片描述

  • start() 方法一个线程只能执行一次
  • sleep() 方法设置线程的休眠时间
  • 调用 join() 方法的线程会优先执行,调用 join(long millis) 方法的线程最长会运行 millis 毫秒

Runnable接口

  • 只有一个方法run();
  • Runnable是Java中用以实现线程的接口
  • 任何实现线程功能的类都必须实现该接口

线程的生命周期

线程的五个状态:

  • 新建(New)

  • 可运行(Runnable)

  • 正在运行(Running)

  • 阻塞(Blocked)

  • 终止(Dead)

在这里插入图片描述


线程的优先级

  • 线程优先级高的线程不一定会先执行,线程优先级越高,先执行执行的概率会更高

  • Java为线程类提供了10个优先级,数字越大优先级越高,优先级可以用整数1-10表示,超出范围会抛出异常,主线程默认优先级为5

  • Thread 类提供了几个优先级常量:
    MAX_PRIORITY:线程的最高优先级10
    NORM_PRIORITY:线程的默认优先级5
    MIN_PRIORITY:线程的最小优先级1

  • Thread 类提供了线程优先级的 get 和 set 方法
    在这里插入图片描述


线程同步

多线程运行会存在一些问题
  1. 各个线程通过竞争cpu时间片儿获得运行机会
  2. 各线程什么时候得到cpu时间片,占用多久,是不可预测的
  3. 一个正在执行的线程在什么地方被暂停是不可预测的
synchronized关键字

可以确保共享对象在同一时刻只能被一个线程访问

synchronized关键字用在:成员方法、静态方法、语句块


线程间通信

wait()方法:中断方法的执行,使线程等待

notify()方法:随机唤醒处于等待的某一个线程,使其结束等待

notifyAll()方法: 唤醒所有处于等待的线程,使它们结束等待

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dynamic_Pro

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值