前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >多线程

多线程

作者头像
Dean0731
发布2022-05-10 16:28:48
5760
发布2022-05-10 16:28:48
举报
文章被收录于专栏:blog-技术博客blog-技术博客

1,线程基础

1,继承Thread方式的线程

  • 当需要再此启动一个线程时,需要再创建对象,不能重复使用。

2,推荐的创建线程方式:继承Runnalbe,使用Thread类

  • 1.5之前就这两种
  • callable 第三种
    • 可以有返回值 call()
    • 可以抛出异常
    • 支持泛型返回值
    • 需要借助FutureTask, 如获取返回值的时候

线程池 第四种方式

  • 提高速度,降低资源消耗
  • 便于线程管理:核心池大小,最大线程数,没任务多长时间终止

3,Thread常用方法

getPriority()

setPrioority(1,5,10)

currentThread() 静态方法

getName()

setName()

yield() 释放cup执行权,变为就绪状态

join():在A线程中B.join() ,A就阻塞,B执行完到A

stop() :过时方法,强制结束线程

sleep(ms)

isAlive()

4,线程分类

守护线程,用户线程

守护线程服务用户线程

  • 最简单程序main主线程与gc回收线程
  • 若没有用户线程jvm则结束

5,线程生命周期

  • NEW : 创建对象
  • RUNNABLE :运行 start
  • BLOCKED:阻塞 sleep,join,等待同步锁,wait,suspend:过时方法
  • WAITING:wait()
  • TIMED-WAITING:wait(time)
  • TERMINATED:stop,exception,run结束

阻塞---》就绪:sleep,join结束获取同步锁,notify,resume:过时方法

6,注意

  • wait:阻塞,会释放锁,必须在synchronized内
  • sleep:阻塞,不会释放锁,任何时候可以

wait,notify,notifyall,必须在同步方法快内,方法内,不能使用lock,他们调用时是锁对象.wait,要注意 此时syn(锁对象),两个所对象必须相同

2,线程同步

  • sync
    • 与wait搭配,notify搭配,若与Lock搭配会造成异常
    • 多用while,不用if
    • 同步代码块,synchronized 自动锁
    • 要求所有相乘同一把锁 synchronized(obj) obj是同一个对象,或同一个类
    • 同步方法:当方法内容全部需要同步时
    • 非静态方法锁即时this 需要注意
    • 静态方法时,锁时当前类本身
  • Lock :接口 1.5之后
    • condition
    • 能够手动开启同步,结束同步,手动锁,指定睡眠,指定唤醒
    • 实现类
      • ReentrantLock:功能与synchronized,可重入锁
      • ReentrantReadWriteLock.ReadLock,有读锁的线程可以共享该方法,几乎相当于没加锁
      • ReentrantReadWriteLock.WriteLock,其他线程不共享该方法

3,线程通信

定制化通信:

  • lambda表达式
  • 接口可写静态方法实现,
  • 普通方法实现,加default 关键字即可

4,JUC工具类

数据库中读写一般不是同步的

JUC中读写都是同步的,即读写同步,因为JVM线程必须加锁,否则不安全,比数据库严格

  • ReentraReadWriteLock:读写锁,写程序优先
  • CountDownLatch:计数器
  • CyclicBarrier:循环栅栏,多个线程处于同一状态时,才继续CyclicBarrier任务
  • Semaphere:信号灯
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-03-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1,线程基础
  • 2,线程同步
  • 3,线程通信
  • 4,JUC工具类
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档