在多线程的交互过程中有这样一种情况,线程ThreadA会启动另外一个线程ThreadB,可能需要让线程ThreadB执行一些诸如计算之类的操作,此时线程ThreadA需要等待线程ThreadB执行结束,并处理线程ThreadB结束后的结果,这个时候我们就需要使用join方法了。

线程类Thread提供了三种join方法,分别是join()方法、join(long millis)、join(long millis,int nanos)。其中join( )方法会一直等待,直到该线程终止。如果在join期间有任意线程中断当前线程的时候会抛出InterruptedException异常,此时线程的中断状态也会被清除掉。另外两个带参数的join方法只是增加了时间上的限制。为了描述join的应用,我们看一个实例:线程九:join和sleep

线程九:join和sleep

例子中主线程创建并调用了一个完成计算的线程对象thread,由于使用了join方法,主线程会一直等到线程对象thread对象执行结束才会打印出结果。

在例子中我们还看到了sleep方法的应用,sleep方法会使线程睡眠,系统提供了两个sleep方法分别是:sleep(long millis)和sleep(long millis,int nanos),参数millis是毫秒数,nanos则是纳秒数。线程实际的睡眠时间取决于不同系统的定时器和调度器的精度。在sleep过程中,如果被别的线程中断则会抛出InterruptedException异常,同时线程的中断状态会被清除掉。

参考链接

相关文章:

  • 2021-05-30
  • 2022-01-07
  • 2022-12-23
  • 2021-07-19
  • 2022-01-19
  • 2022-12-23
  • 2021-12-09
  • 2021-08-06
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-08-16
  • 2021-10-29
  • 2021-07-22
  • 2021-10-06
相关资源
相似解决方案