Skip to content

在 Java 中,可以通过继承Thread类或实现Runnable接口来创建新线程。以下是两种常见的方法:

继承Thread类:
class MyThread extends Thread {
    public void run() {
        // 线程要执行的代码
    }
}

// 创建并启动新线程
MyThread myThread = new MyThread();
myThread.start();
实现Runnable接口:
class MyRunnable implements Runnable {
    public void run() {
        // 线程要执行的代码
    }
}

// 创建并启动新线程
Thread myThread = new Thread(new MyRunnable());
myThread.start();

无论使用哪种方式,都需要重写run()方法,在其中编写线程要执行的代码逻辑。然后,通过创建线程对象,并调用start()方法来启动线程。

值得注意的是,第二种方法使用了Runnable接口,这样可以更好地支持多重继承和代码复用。因此,推荐使用实现Runnable接口的方式来创建线程。

线程的优先级

在Java中,线程的优先级用来指定线程在竞争CPU资源时的相对重要性。每个线程都有一个默认优先级为5(Thread.NORM_PRIORITY)。线程的优先级范围从1到10,其中1是最低优先级,10是最高优先级。

可以使用setPriority(int priority)方法设置线程的优先级,其中priority参数接受一个整数值,表示新的优先级。注意,虽然可以设置线程的优先级,但并不能保证高优先级的线程一定会在低优先级的线程之前执行,这取决于底层操作系统的调度策略。

以下是一个示例代码,演示了如何设置线程的优先级:

public class PriorityDemo {
    public static void main(String[] args) {
        Thread thread1 = new MyThread();
        Thread thread2 = new MyThread();

        // 设置线程1的优先级为最高
        thread1.setPriority(Thread.MAX_PRIORITY);

        // 设置线程2的优先级为最低
        thread2.setPriority(Thread.MIN_PRIORITY);

        thread1.start();
        thread2.start();
    }

    static class MyThread extends Thread {
        @Override
        public void run() {
            System.out.println("当前线程:" + Thread.currentThread().getName() + ",优先级:" + Thread.currentThread().getPriority());
        }
    }
}

运行上述代码,你将看到输出结果类似于:

当前线程:Thread-0,优先级:10
当前线程:Thread-1,优先级:1

在这个例子中,我们创建了两个线程,并分别将它们的优先级设置为最高和最低。然后启动这两个线程,在输出中可以看到线程0的优先级是10(最高),线程1的优先级是1(最低)。

需要注意的是,尽量避免过度依赖线程优先级来控制程序的执行顺序,因为线程优先级可能受到不同操作系统和硬件平台的影响,而且过度使用线程优先级可能导致不可预测的行为。