• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

java线程之join方法的使用介绍

java 搞代码 4年前 (2022-01-09) 15次浏览 已收录 0个评论

在上面的例子中多次使用到了Thread类的join方法。我想大家可能已经猜出来join方法的功能是什么了。对,join方法的功能就是使异步执行的线程变成同步执行。也就是说,当调用线程实例的start方法后,这个方法会立即返回,如果在调用start方法后后需要使用一个由这个线程计算得到的值,就必须使用join方法。如果不使用join方法,就不能保证当执行到start方法后面的某条语句时,这个线程一定会执行完。而使用join方法后,直到这个线程退出,程序才会往下执行。
下面的代码演示了join的用法。

package mythread; public class JoinThread extends Thread {     public static volatile int n = 0;     public void run()     {         for (int i = 0; i < 10; i++, n++)             try             {                 sleep(3);  // 为了使运行结果更随机,延迟3毫秒             }             catch (Exception e)             {             }                                           }     public static void main(String[] args) throw<mark>本文来源gaodaimacom搞#^代%!码&网(</mark>s Exception     {         Thread threads[] = new Thread[100];         for (int i = 0; i < threads.length; i++)  // 建立100个线程             threads[i] = new JoinThread();         for (int i = 0; i < threads.length; i++)   // 运行刚才建立的100个线程             threads[i].start();         if (args.length > 0)               for (int i = 0; i < threads.length; i++)   // 100个线程都执行完后继续                 threads[i].join();         System.out.println("n=" + JoinThread.n);     } }

在例程2-8中建立了100个线程,每个线程使静态变量n增加10.如果在这100个线程都执行完后输出n,这个n值应该是1000.

1. 测试1

使用如下的命令运行上面程序:

1 java mythread.JoinThread

程序的运行结果如下:

1 n=442

这个运行结果可能在不同的运行环境下有一些差异,但一般n不会等于1000.从上面的结果可以肯定,这100个线程并未都执行完就将n输出了。

2. 测试2

使用如下的命令运行上面的代码:

在上面的命令行中有一个参数join,其实在命令行中可以使用任何参数,只要有一个参数就可以,这里使用join,只是为了表明要使用join方法使这100个线程同步执行。

程序的运行结果如下:

1 n=1000

无论在什么样的运行环境下运行上面的命令,都会得到相同的结果:n=1000.这充分说明了这100个线程肯定是都执行完了,因此,n一定会等于1000。

以上就是java线程之join方法的使用介绍的内容,更多相关内容请关注搞代码(www.gaodaima.com)!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:java线程之join方法的使用介绍

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址