Java线程

1. 线程的创建

  • 创建一个Thread类,或者一个Thread子类的对象
    • Thread是一个线程类,位于java.lang包下
      • Thread() 创建一个线程对象
      • Thread(String name) 创建一个具有指定名称的线程对象
      • Thread(Runnable target) 创建一个基于Runnable接口实现类的线程对象
      • Thread(Runnable target, String name) 创建一个基于Runnable接口实现类,并且具有指定名称的线程对象
    • 常用方法
      • public void run() 线程相关的代码写在该方法中,一般需要重写
      • public void start() 启动线程的方法
      • public static void sleep(long m) 线程休眠m毫秒的方法
      • public void join() 优先执行调用join()方法的线程
  • 创建一个实现Runnable接口的类的对象
    • 只有一个方法run()
    • Runnable是Java中用以实现线程的接口
    • 任何实现线程功能的类都必须实现该接口

2. 线程的状态和生命周期

  • 线程的状态
    • 新建(New)
    • 可运行(Runnable)
    • 正在运行(Running)
    • 阻塞(Blocked)
    • 终止(Dead)
  • 线程的生命周期
    • 新建New
      • 调用start()进入可运行Runnable
      • 调用stop()进入终止Dead
    • 可运行Runnable
      • 获取cpu使用权进入正在运行Running
      • 调用stop()进入终止Dead
    • 正在运行Running
      • 时间片用完yield()进入可运行Runnable
      • 调用join()、wait()、sleep()、I/O请求进入阻塞Blocked
      • 线程执行完毕或异常终止、或调用stop()进入Dead
    • 阻塞Blocked
      • 等待调用join()的线程执行完毕
      • notify()或nofifyAll()
      • sleep超时
      • I/O请求完成
      • 调用stop()进入Dead

3. sleep方法应用

  • Thread类的方法
    • public static void sleep(long millis)
  • 作用是在指定的毫秒数内让正在执行的线程休眠(暂停执行)

4. join方法应用

  • Thread类的方法
    • public final void join()
    • public final void join(long millis)
  • 作用是等待调用该方法的线程结束后才能执行

5. 线程优先级

  • Java为线程类提供了10个优先级
  • 优先级可以用整数1-10表示,超过范围会抛出异常
  • 主线程默认优先级为5
  • 优先级常量
    • MAX_PRIORITY 线程的最高优先级10
    • MIN_PRIORITY 线程的最低优先级1
    • NORM_PRIORITY 线程的默认优先级5
  • 优先级相关的方法
    • public int getPriority() 获取线程优先级的方法
    • public void setPriority(int newPriority) 设置线程优先级的方法

6. 多线程运行问题

  • 各个线程是通过竞争CPU时间而获得运行机会的
  • 各线程什么时候得到CPU时间、占用多久是不可预测的
  • 一个正在运行着的线程在什么地方被暂停是不确定的
  • 银行存取款问题
    • 为了保证在存款或取款的时候,不允许其他线程对账户余额进行操作
    • 需要将Bank对象进行锁定
    • 使用关键字synchronized实现,可以用在三个地方
      • 成员方法 public synchronized void saveAccount()
      • 静态方法 public static synchronized void saveAccount()
        • 语句块 synchronized(obj) {...}

7. 线程间通信

  • wait()方法 中断方法的执行,使线程等待
  • notify()方法 唤醒处于等待的某一个线程,使其结束等待
  • notifyAll()方法 唤醒所有处于等待的线程,使它们结束等待
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值