Thread 类的基本用法

本文详细介绍了Java中线程的创建方式(继承Thread、实现Runnable接口及匿名内部类),线程的中断、等待(join方法)以及休眠(sleep方法)的使用。通过示例展示了如何在实际编程中应用这些概念以提高程序效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一.线程创建

1.方法(1)继承Thread来创建一个线程类

2.方法(2)实现 Runnable 接⼝

3.方法(3)匿名内部类创建 Thread ⼦类对象

二.线程的中断

三.线程等待

4.线程休眠


一.线程创建

Java 中的线程(Thread)是一种轻量级的子进程,用于执行程序中的一段代码。线程的使用可以实现程序的并发执行,提高程序的运行效率。在 Java 中,线程的基本用法涉及线程的创建、中断、等待、休眠以及获取线程实例等操作。

1.方法(1)继承Thread来创建一个线程类

class MyThread extends Thread{
    public void run(){
        System.out.println("这里是线程运行的代码");
    }
}

public class Test {
    public static void main(String[] args) {
        MyThread myThread = new MyThread();       //创建MyThread类的实例
        myThread.start();          //调用start方法启动线程

    }
}

2.方法(2)实现 Runnable 接⼝

class MyThread extends Thread{
    public void run(){
        System.out.println("这里是继承Thread类的代码");
    }
}

class MyRunable implements Runnable{          //继承Thread来创建一个线程类
    public void run(){
        System.out.println("这是实现Runable接口的代码");
    }
}

public class Test {
    public static void main(String[] args) {
        MyThread myThread = new MyThread();
        Thread t = new Thread(new MyRunable());        //创建 Thread 类实例, 调⽤                 
                                                      //Thread 的构造⽅法时将 
                                                     //Runnable 对象作为 target 参数.
        myThread.start();
        t.start();                                //调⽤ start ⽅法启动线程

    }
}

3.方法(3)匿名内部类创建 Thread ⼦类对象

Thread t1 = new Thread() {
 @Override
 public void run() {
 System.out.println("使⽤匿名类创建 Thread ⼦类对象");
 }
};

lambda 表达式创建 Runnable ⼦类对象

 Thread t4 = new Thread(()->{
            System.out.println("使⽤匿名类创建 Thread ⼦类对象");
        });

二.线程的中断

通过调用interrupt()方法来中断

public class Test {
    public static void main(String[] args) throws InterruptedException {
        Thread t1 = new Thread(()->{
            int count = 0;
            while (!Thread.currentThread().isInterrupted()){
                System.out.println(count);
                count++;
            }
        });

        t1.start();
        Thread.sleep(1000);
        t1.interrupt();

    }
}

在上述代码中,通过 Thread.currentThread().isInterrupted() 来检查线程的中断状态。如果线程未被中断,则继续执行耗时操作,否则退出循环。

三.线程等待

有时,我们需要等待⼀个线程完成它的⼯作后,才能进⾏⾃⼰的下⼀步⼯作,我们使用join()方法来进行

public class Test {

    public static void main(String[] args) throws InterruptedException {

       //Object locker = new Object();

        for (int i = 0; i < 10; i++) {

            Thread t1 = new Thread(()-> {

                    System.out.print("A");

            });


            Thread t2 = new Thread(()->{

                    System.out.print("B");


            });

            Thread t3 = new Thread(()->{

                    System.out.println("C");


            });

            t1.start();

            t1.join();

            t2.start();

            t2.join();

            t3.start();

            t3.join();

        }

    }

}

上述代码中,在t1执行完后再执行t2,在t2执行完后再执行t3,按照顺序打印出ABC,大家可以试试把join注释掉,看看运行的结果

4.线程休眠

线程休眠是一种使线程暂停执行一段时间的机制,可以通过调用 sleep() 方法来实现。

public class Test {
    public static void main(String[] args) throws InterruptedException {
        Thread t1 = new Thread(()->{
            int count = 0;
            while (true){
                System.out.println(count);
                count++;
                try {
                    Thread.sleep(1000);      //休眠1秒
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
            }
        });

        t1.start();
    }
}

在上述代码中,每次打印一次count都会暂停一秒,让后在继续打印

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值