yield方法释放锁吗_多线程笔记二

本文探讨了Java中的线程调度,包括join()方法和Thread.yield()方法的使用,详细解释了yield()方法并不会释放锁。同时,介绍了线程安全的概念,如synchronized关键字的应用,并讨论了死锁的原因和解决方案。最后,通过生产者消费者模式展示了wait()、notify()的使用,以及一个简单的示例代码。
摘要由CSDN通过智能技术生成

1、 线程间调度的常用方法

1.1 join()方法

pubblic final void join() : 让父线程等待子线程结束后才继续运行

pubblic final void join(mills:long) : mills 以毫秒为单位的等待时长

pubblic final void join(mills:long,int nanos) : nanos 要等待的附加纳秒时长

join()的使用场景:

在实际开发中,我们很少会使用thread.join()

在实际使用过程中,我们可以通过join()方法来等待线程执行的结果

我们通过以下伪代码来说明join的使用场景

public void joinDemo(){

//....

Thread t=new Thread(otherService);

t.start();

//....

//其他业务逻辑处理,不需要确定t线程是否执行完

insertData();

//后续的处理,需要依赖t线程的执行结果,可以在这里调用join方法等待t线程执行结束

t.join();

}

1.2 Thread.yield()方法

Thread.yield():

暂停当前线程,允许其他具有同等优先级的线程获得运行机会

yield 即“谦让”,也是Thread类的方法,它让掉当前线程CPU的时间片,使正在运行中的线程重新变成就绪状态,并重新竞争CPU的调度权。它可能会获取到,也有可能被其他线程获取到

yield和sleep的异同

1、yield,sleep都能暂停当前线程,sleep可以指定具体的休眠时间,而yield则依赖cpu的时间片去划分

2、yield、sleep 两个在暂停过程中,如以及持有锁,则都不会释放锁资源

3、yield不能被中断、而sleep则可以接受中断片

2、线程间的同步(安全)

2.1 线程安全(synchhronized),同步锁,安全锁说明

当多个线程对象调用同一个对象的方法时,同一时刻只能有一个线程可以使用资源,其他线程需要等待当前线程将对象资源释放之后才可以继续使用

可以用来修饰一个

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值