多线程

多线程

3.1 创建线程

创建线程的三种方法

  1. 继承Thread类
  2. 实现Runnable接口(多用 因为继承只能单继承)
  3. 实现callable接口

3.2 线程状态

  1. Thread t=new Thread(); 创建线程进入新生状态 ,有自己的工作空间 从主存拷贝数据
  2. 调用start() 方法进入就绪状态,并不意味着马上执行。进入就绪的四种方法
    1. start()
    2. 解除阻塞
    3. yield 主动让出cpu 避免资源占用过多 调用yield后没有其他等待执行的线程 当前线程会马上恢复
    4. jvm根据调度算法切换线程
  3. 调度到这个线程的时候进入运行状态 开始执行线程体
  4. 遇到sleep() wait() 或者同步锁定的时候 从运行状态进入阻塞状态 代码停止执行 不保证调用以上方法立即阻塞。阻塞事件结束后,进入就绪状态 等待cpu的重新调度。。 阻塞4种原因
    1. sleep() 仍占用资源 调用sleep后 没有其他等待执行的线程 当前线程也不会马上恢复
    2. wait() 不占用资源
    3. join() 阻塞指定线程 等待另一个线程执行完
    4. 等待IO操作 read write

setDaemon()

  • 将指定线程设置为后台线程,守护线程
  • 创建用户线程的线程结束时,后台线程也随之消亡
  • 只能在线程启动之前把它设为后台线程

setPriority (int newPriority) getPriority

  • 线程优先级代表概率
  • 范围1-10 默认5

stop()

  • 停止线程 不推荐使用 想办法让代码执行完自己结束

3.3 线程的其他方法

  • isAlive()
  • getName()
  • setName()
  • currentThread()

3.4 线程通信

final void wait() 线程等待 直到其他线程通知 会释放锁

final void wait(long timeout) 指定等待时间

final void notify() 唤醒等待的线程

final void notifyAll() 唤醒同一个对象中所有wait的线程 高级别的优先调度

这些方法只能用在同步方法或者同步块中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值