Thread
类是 Java 中用于多线程编程的核心类之一,提供了一系列方法来管理线程的生命周期和执行。以下是 Thread
类的一些主要方法:
1. 构造方法:
-
Thread()
: 创建一个新的线程对象。Thread myThread = new Thread();
-
Thread(Runnable target)
: 创建一个新的线程对象,并指定要运行的Runnable
对象。Thread myThread = new Thread(new MyRunnable());
-
Thread(String name)
: 创建一个新的线程对象,并指定线程的名称。Thread myThread = new Thread("MyThread");
2. 启动和运行:
-
void start()
: 启动线程,使线程进入就绪状态,等待获取 CPU 时间片。myThread.start();
-
void run()
: 定义线程运行时的行为,需要在子类中重写。public void run() { // 线程执行的代码 }
3. 线程的状态和控制:
-
State getState()
: 获取线程的状态,返回值是Thread.State
枚举类型。Thread.State state = myThread.getState();
-
void join()
: 当前线程等待调用该方法的线程执行完成。try { myThread.join(); } catch (InterruptedException e) { e.printStackTrace(); }
-
void sleep(long millis)
: 让当前线程休眠指定的毫秒数。try { Thread.sleep(1000); // 休眠1秒 } catch (InterruptedException e) { e.printStackTrace(); }
4. 线程优先级:
-
void setPriority(int priority)
: 设置线程的优先级。范围从Thread.MIN_PRIORITY
(1) 到Thread.MAX_PRIORITY
(10),默认是Thread.NORM_PRIORITY
(5)。myThread.setPriority(Thread.MAX_PRIORITY);
5. 线程信息和属性:
-
long getId()
: 获取线程的唯一标识符。long threadId = myThread.getId();
-
String getName()
: 获取线程的名称。String threadName = myThread.getName();
-
void setName(String name)
: 设置线程的名称。myThread.setName("MyThread");
6. 中断和守护线程:
-
void interrupt()
: 中断线程。并不会立即停止线程,而是将线程的中断标志设置为true
。myThread.interrupt();
-
boolean isInterrupted()
: 判断线程是否被中断。boolean interrupted = myThread.isInterrupted();
-
static boolean interrupted()
: 判断当前线程是否被中断,并清除中断状态。boolean interrupted = Thread.interrupted();
-
void setDaemon(boolean on)
: 将线程设置为守护线程。守护线程在所有用户线程执行完毕后会自动终止。myThread.setDaemon(true);
7. 线程组:
-
ThreadGroup getThreadGroup()
: 获取线程所在的线程组。ThreadGroup group = myThread.getThreadGroup();
8. 线程的异常处理器:
-
static void setDefaultUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh)
: 设置默认的未捕获异常处理器。 -
void setUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh)
: 设置线程的未捕获异常处理器。myThread.setUncaughtExceptionHandler((thread, exception) -> { System.err.println("Uncaught exception in thread " + thread.getName() + ": " + exception.getMessage()); });
9. 线程的运行时信息:
-
StackTraceElement[] getStackTrace()
: 获取线程的堆栈跟踪信息。StackTraceElement[] stackTrace = myThread.getStackTrace();
这只是 Thread
类的一些常用方法,还有其他一些方法和属性可以用于更灵活地管理线程。多线程编程需要小心处理线程的生命周期、同步、共享资源等问题,以确保程序的正确性和性能。