java多线程中常用的方法

join方法
join()方法是让当前线程阻塞.通俗的话说,就是在哪个线程调用哪个线程就阻塞,让调用join方法的线程在它前面执行完.join方法你可以将它想象为"插队",他不能保证哪个线程先开始.但是了以保证哪个线程先结束.
给大家看个例子:
在这里插入图片描述
只有当线程t1结束,只能是main将标志位设置为false,但是显然是不可能的,线程t1,无限循环,所以这个方法就不可能结束.
在这里插入图片描述
interrupt方法
interrupt方法分两种情况:
1.如果当前线程内部执行的逻辑不涉及sleep这样的等待,此时就会通过标记为来退出.
2.如果当前线程内部执行的逻辑涉及到了sleep这样的等待,就会触发中断异常,通过catch语句捕捉到异常,在自行处理.(我在这块的处理是加了break);
代码如下:
第一种情况:
在这里插入图片描述
在这里插入图片描述

第二种情况:
在这里插入图片描述
在这里插入图片描述
sleep方法
前面我们都用了这么多次sleep都没说他是干什么的,其实它就是让当前的线程"睡觉"了,就进入了阻塞状态,单位是ms.
wait()方法
其实wait()方法就是使线程停止运行.
1.方法wait()的作用是使当前执行代码的线程进行等待,wait()方法是Object类的方法,该方法是用来将当前线程置入“预执行队列”中,并且在wait()所在的代码处停止执行,直到接到通知或被中断为止。
2.wait()方法只能在同步方法中或同步块中调用。如果调用wait()时,没有持有适当的锁,会抛出异常
3. wait()方法执行后,当前线程释放锁,线程与其它线程竞争重新获取锁
notify方法
notify方法就是使停止的线程继续运行

  1. 方法notify()也要在同步方法或同步块中调用,该方法是用来通知那些可能等待该对象的对象锁的其它线程,对其发出通知notify,并使它们重新获取该对象的对象锁。如果有多个线程等待,则有线程规划器随机挑选出一个呈wait状态的线程.
  2. 在notify()方法后,当前线程不会马上释放该对象锁,要等到执行notify()方法的线程将程序执行
    完,也就是退出同步代码块之后才会释放对象锁
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值