通过小实例说明Java多线程中join方法的使用与作用。
1、 JDK中关于join方法的三个函数说明如上所述。
2、 join()方法用于等待当前线程执行完毕。
3、 join(long millis)用于等待线程执行完成或最长等待指定毫秒数,若millis为0,则等同于调用无参的join()方法,一直等待线程结束。
4、 join(long millis, int nanos)方法可将线程等待时间控制得更加精细,精确至十亿分之一秒,提升定时操作的准确性。
5、 join方法用于使当前线程等待调用该方法的线程执行完毕或等待指定时长后再继续执行。
6、 在Eclipse中创建一个Java项目,新建名为Main的类,项目结构和Main.java的具体内容详见附图所示。
7、 Main类包含一个静态的printNum方法和一个main方法。
8、 在主方法中创建两个线程,分别命名为a和b。
9、 所示,线程a在b中调用join()方法后,程序运行时控制台输出结果。
10、 线程b在线程a完成后才执行。
11、 将a.join()修改为a.join(20),运行程序后,控制台输出显示:在线程a执行未完成时,线程b便已开始运行,表明设置时间限制后,两线程的执行顺序发生了变化。
12、 将a.join(20)修改为a.join(200)后运行程序,控制台输出显示线程b在线程a打印两个数字后才开始执行,表明线程b确实等待了线程a一段时间,体现了join方法的等待机制。
13、 对 printNum 方法添加锁后运行程序,控制台输出结果显示:即使在 join() 方法中设置了时间限制,线程 b 仍需等待线程 a 完全执行完毕并释放锁后才能继续执行,体现出锁的同步控制作用。
评论
更多评论