守护线程,礼让线程,插入线程
守护线程(Daemon Thread)
守护线程是为其他线程提供服务的线程,例如垃圾回收线程。当所有非守护线程结束时,守护线程会自动终止,无论其是否执行完毕。守护线程通过setDaemon(true)
方法设置。
Thread daemonThread = new Thread(() -> {while (true) {System.out.println("守护线程运行中...");}
});
daemonThread.setDaemon(true);
daemonThread.start();
礼让线程(Yield Thread)
礼让线程通过Thread.yield()
方法实现,当前线程会让出CPU资源,进入就绪状态,让其他线程有机会执行。但礼让并不保证其他线程一定能获得执行权,具体取决于线程调度器。
Thread thread1 = new Thread(() -> {for (int i = 0; i < 5; i++) {System.out.println("线程1执行");Thread.yield(); // 礼让}
});Thread thread2 = new Thread(() -> {for (int i = 0; i < 5; i++) {System.out.println("线程2执行");}
});thread1.start();
thread2.start();
插入线程(Join Thread)
插入线程通过thread.join()
方法实现,当前线程会等待目标线程执行完毕后再继续执行。常用于需要依赖其他线程结果的场景。
Thread threadA = new Thread(() -> {System.out.println("线程A开始执行");try {Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("线程A执行完毕");
});Thread threadB = new Thread(() -> {System.out.println("线程B开始执行");try {threadA.join(); // 等待线程A执行完毕} catch (InterruptedException e) {e.printStackTrace();}System.out.println("线程B执行完毕");
});threadA.start();
threadB.start();