java打印主线程名字
时间: 2023-10-18 18:24:10 浏览: 33
可以通过Thread.currentThread().getName()方法来获取当前线程的名称,因此可以使用以下代码打印主线程的名称:
```
System.out.println(Thread.currentThread().getName());
```
在Java中,主线程的名称默认为"main",因此打印出来的结果应该是"main"。
相关问题
java子线程切换主线程
Java中可以通过使用线程的join()方法实现子线程切换主线程。
join()方法的作用是让当前线程等待被调用线程执行完毕。在主线程中调用子线程的join()方法,主线程就会等待子线程执行完毕后再继续执行。
例如:
```
public class ThreadTest {
public static void main(String[] args) {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
// 子线程执行任务
System.out.println("子线程开始执行任务...");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("子线程执行任务结束。");
}
});
thread.start();
// 主线程等待子线程执行完毕
try {
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
// 子线程执行完毕后,主线程继续执行
System.out.println("主线程执行完毕。");
}
}
```
在上面的例子中,子线程执行一个任务,然后主线程等待子线程执行完毕后再继续执行。运行结果如下:
```
子线程开始执行任务...
子线程执行任务结束。
主线程执行完毕。
```
可以看到,主线程在子线程执行完毕后再继续执行。这就实现了子线程切换主线程。
java主线程等待子线程
Java中,主线程等待子线程可以使用CountDownLatch或者LockSupport实现。其中CountDownLatch是一个同步工具类,可以让一个或多个线程等待其他线程完成操作,而LockSupport则是一个线程阻塞工具类,可以让线程阻塞和唤醒。
使用CountDownLatch实现主线程等待子线程的示例代码如下:
```java
import java.util.concurrent.CountDownLatch;
public class Main {
public static void main(String[] args) throws InterruptedException {
CountDownLatch latch = new CountDownLatch(2); // 创建CountDownLatch对象,计数器初始值为2
new Thread(() -> {
try {
System.out.println("子线程1开始执行");
Thread.sleep(2000); // 模拟子线程1执行任务
System.out.println("子线程1执行完毕!");
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
latch.countDown(); // 计数器减1
}
}).start();
new Thread(() -> {
try {
System.out.println("子线程2开始执行");
Thread.sleep(3000); // 模拟子线程2执行任务
System.out.println("子线程2执行完毕!");
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
latch.countDown(); // 计数器减1
}
}).start();
latch.await(); // 主线程等待计数器归零
System.out.println("主线程执行!\ndo something...");
}
}
```
使用LockSupport实现主线程等待子线程的示例代码如下:
```java
import java.util.concurrent.locks.LockSupport;
public class Main {
public static void main(String[] args) {
Thread mainThread = Thread.currentThread();
new Thread(() -> {
try {
System.out.println("子线程开始执行");
Thread.sleep(2000); // 模拟子线程执行任务
System.out.println("子线程执行完毕!");
} catch (InterruptedException e) {
e.printStackTrace();
}
LockSupport.unpark(mainThread); // 唤醒主线程
}).start();
LockSupport.park(); // 主线程阻塞
System.out.println("主线程执行!\ndo something...");
}
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.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)