java中的join
时间: 2023-02-06 15:02:18 浏览: 73
在 Java 中,join 方法是 Thread 类中的一个方法,它可以用来等待另一个线程结束再继续执行。例如:
```
Thread t1 = new Thread(new Runnable() {
public void run() {
// do something
}
});
t1.start();
// 等待 t1 线程结束
t1.join();
// t1 线程已结束,继续执行后面的代码
```
可以使用 join 方法来协调多个线程之间的执行顺序。它还可以指定一个超时时间,表示在这个时间内如果目标线程没有结束,就不再等待,继续执行后面的代码。例如:
```
t1.join(1000); // 等待 1 秒钟,如果 t1 线程在 1 秒钟内结束,就继续执行后面的代码,否则不再等待,继续执行后面的代码
```
注意,join 方法是会阻塞当前线程的,也就是说,如果当前线程调用了另一个线程的 join 方法,它会被阻塞,直到目标线程结束或者超时才会继续执行。
相关问题
java中 join源码分析
`join()` 方法是 `Thread` 类中的一个方法,它的作用是让调用该方法的线程等待该线程执行完毕。当一个线程使用 `join()` 方法时,调用线程会被阻塞,直到被调用线程执行完毕后才会继续执行。
下面是 `join()` 方法的源码:
```
public final void join() throws InterruptedException {
join(0);
}
```
可以看到,`join()` 方法实际上是调用了另一个重载方法 `join(long millis)`,并将参数设置为 0。
```
public final synchronized void join(long millis)
throws InterruptedException {
long base = System.currentTimeMillis();
long now = 0;
if (millis < 0) {
throw new IllegalArgumentException("timeout value is negative");
}
if (millis == 0) {
while (isAlive()) {
wait(0);
}
} else {
while (isAlive()) {
long delay = millis - now;
if (delay <= 0) {
break;
}
wait(delay);
now = System.currentTimeMillis() - base;
}
}
}
```
可以看到,`join(long millis)` 方法是一个同步方法,它首先对传入的参数进行检查,如果小于 0,则会抛出异常。
如果传入的参数为 0,则调用 `wait(0)` 方法,这会使当前线程进入等待状态,直到被调用线程执行完毕后才会被唤醒。
如果传入的参数不为 0,则会在循环中检查被调用线程是否还活着,如果还活着,则调用 `wait(delay)` 方法,这会使当前线程进入等待状态,等待一定的时间后被唤醒。在每次循环中,都会更新当前时间 `now`,并计算需要等待的时间 `delay`。
如果被调用线程已经执行完毕或者等待时间已经超过了传入的参数,则会跳出循环,方法执行完毕。
总的来说,`join()` 方法的本质是利用了 `wait()` 和 `notify()` 方法实现线程的同步和等待。
java中join拼接字符串
在Java中,可以使用String类的join()方法来拼接字符串。这个方法接受两个参数,第一个参数是分隔符,第二个参数是要拼接的字符串序列。例如:
```
String[] strs = {"hello", "world", "java"};
String result = String.join("-", strs);
System.out.println(result);
```
这段代码将会输出:
```
hello-world-java
```
在这个例子中,我们将字符串数组strs中的元素用"-"拼接起来,并将结果赋值给字符串变量result。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)