线程常用API

本文详细介绍了Java中的Thread类构造器、常用方法,如线程休眠、设置和获取线程名称,以及线程安全问题、同步方法、Lock锁和线程池的原理与使用。特别关注了线程池的创建、性能影响和任务拒绝策略。
摘要由CSDN通过智能技术生成

Thread的构造器

线程的休眠时间

  • public static void sleep(long time),当前线程休眠指定的时间后再继续执行,单位为毫秒
  • 静态方法是属于类的,直接可以用类名来调用Thread.sleep(199)
  • 项目经理让我加上这行代码,如果用户愿意交钱,我就注释掉这项代码
  • 总结:
String getName()//获取带你给钱线程的名称,默认县城名称是Thread索引
void setName(String name)//设置线程的名称
public static Thread currentThread()// 返回当前正在执行的线程对象的索引
public static voidsleep(long time)//让线程休眠指定的时间,单位为毫秒
public void run () //线程任务方法
public void start()//线程启动方法

2. Thread常用方法、构造器。
public Thread(String name)//可以为当前线程指定名称

public Thread (Runnable target)//把Runnable对象交给线程对象
public Thread(Runnable target)//把Runnable对象交给线程对象
public Thread (Runnable target ,String name)//把Runnable对象交给线程对象,并指定形成名称

线程安全问题

  • 多个线程同时操作一个共享资源的时候可能会出现业务安全问题,称为线程安全问题
  • 锁对象的规范要求
  1. 规范上:建议使用共享资源作为锁对象
  2. 对于实例方法建议使用this作为锁对象
  3. 对于静态方法建议使用哦个字节码(类名.class)对象作为锁对象
  • 同步方法底层原理
  1. 同步方法其实底层也是有隐式锁方法的,只是锁的范围是整个方法代码
  2. 如果方法是实例方法:同步方法默认用this作为锁对象,但是代码要高度面向对象
  3. 如果方法是静态方法:同步方法默认用类名.class作为锁的对象
  • 同步方法和同步代码块那种同步方法比较好?
  1. 同步代码块锁的范围比较小,同步方法锁的范围更大
  • 对和新方法使用synchronized修饰

Lock锁

是接口不能直接用,需要实现类来使用

  • 为了更加清晰的表达如果枷锁和释放锁,

线程通信


线程池

  • 什么是线程池
  1. 线程池就是一个可以服用线程的技术
  • 不使用线程池的问题
  1. 如果用户每发起一个请求,后台就创建一个新的线程来处理,下次新任务来了又要创建新线程,而创建新线程的开销是很大的,这样会严重影响系统的性能。
  • 线程池的API
  • 如何得到线程池对象
  1. 使用ExecutorService的实现类ThreadPoolExecutor自创建一个线程池对象,
  2. 使用Executors(线程池的工具类)调用方法返回不同特点的线程池对象
  • 临时线程什么时候创建?
  1. 新任务提交时发现核心线程都很忙,任务队列也满了,并且还可以创建临时线程,此时才会创建临时线程
  • 什么时候会开始拒绝任务?
  1. 核心线程和临时线程都再忙,任务队列也满了,新的任务过来的时候才会开始任务拒绝
  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值