Java进阶DAY31-06-多线程中常用的成员方法
在Java的多线程编程中,理解并掌握各种线程操作的成员方法是非常重要的。这些方法帮助我们控制和管理线程的执行流程。本节将介绍一些在多线程编程中常用的成员方法。
1. start()
方法
- 功能:启动一个新的线程,新线程会执行相应的
run()
方法。start()
方法调用后,线程进入就绪状态,等待调度执行。 - 示例:
Thread thread = new Thread(() -> { // 线程执行的代码 }); thread.start(); // 启动线程
2. run()
方法
- 功能:定义线程执行的操作。
run()
方法体中的代码是在新线程中执行的。 - 示例:
public void run() { // 线程需要执行的任务 }
3. sleep(long millis)
方法
- 功能:使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行),毫秒数结束之后,线程继续执行。
- 注意:
sleep
方法会抛出InterruptedException
异常,因此需要处理这个异常(try-catch)或者声明抛出。 - 示例:
try { Thread.sleep(1000); // 使线程暂停1秒钟 } catch (InterruptedException e) { e.printStackTrace(); }
4. join()
方法
- 功能:等待该线程终止。在一个线程中调用另一个线程的
join()
方法,会使当前线程停止执行,直到被join
的线程结束才继续执行。 - 示例:
Thread t1 = new Thread(() -> { // 线程1执行的代码 }); t1.start(); try { t1.join(); // 等待线程1执行完成 } catch (InterruptedException e) { e.printStackTrace(); }
5. interrupt()
方法
- 功能:用于中断线程。如果线程处于阻塞状态(如调用
sleep()
方法),那么线程将立即退出阻塞状态,并抛出InterruptedException
。 - 示例:
thread.interrupt(); // 中断线程
6. yield()
方法
- 功能:使当前线程从执行状态(运行状态)变为可执行态(就绪状态)。线程调度器将重新调度,优先级相同或更高的其他线程可能会获得执行的机会。
- 注意:调用
yield()
方法并不会导致线程被永久剥夺执行的机会。 - 示例:
Thread.yield();
7. setPriority(int newPriority)
方法
- 功能:更改线程的优先级。线程的优先级范围从
Thread.MIN_PRIORITY
(1)到Thread.MAX_PRIORITY
(10)。默认优先级为Thread.NORM_PRIORITY
(5)。 - 示例:
thread.setPriority(Thread.MAX_PRIORITY); // 设置线程的最高优先级
通过这些基本的线程操作方法,我们可以更好地管理和控制线程的执行,实现复杂的并发程序。在使用这些方法时,要注意异常处理和线程安全问题,确保程序的健壮性和稳定性。
实际操作: