Java-线程的操作

        在Java多线程编程中,线程的操作主要包括启动、礼让、等待、中断、终止等。下面是这些操作的代码示例及其注释:

1.启动线程(Start)

 使用start()方法启动线程,使其进入可运行(RUNNABLE)状态。

Thread thread = new Thread(() -> {
    // 线程执行的代码
    System.out.println("线程 " + Thread.currentThread().getName() + " 正在运行");
});
thread.start(); // 启动线程

2.礼让线程(Yield) 

  Thread.yield()方法是一种提示,告诉调度器当前线程愿意让出CPU资源,但调度器可以选择忽略这个提示。这并不是强制性的,而是一种协作机制,可能会礼让不成功。

public void run() {
    for (int i = 0; i < 5; i++) {
        System.out.println(Thread.currentThread().getName() + " 在运行");
        Thread.yield(); // 礼让线程
    }
}

3.等待线程(Join)

           使用join()方法使当前线程等待另一个线程完成执行。这在需要等待某个线程完成后再继续执行时非常有用。也可以理解为插队操作,让别的线程优先执行。

Thread t1 = new Thread(() -> {
    try {
        Thread.sleep(2000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    System.out.println("线程 t1 执行完毕");
});
t1.start();
try {
    t1.join(); // 当前线程等待 t1 线程执行完毕
} catch (InterruptedException e) {
    e.printStackTrace();
}
System.out.println("主线程执行完毕");

4. 中断线程(Interrupt)

        使用interrupt()方法中断线程,但线程可以选择是否响应中断。中断一个线程并不会立即停止其执行,而是设置一个中断状态标志,线程可以在适当的时候检查并处理这个标志。

Thread t2 = new Thread(() -> {
    while (!Thread.currentThread().isInterrupted()) {
        System.out.println("线程 t2 正在运行");
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            System.out.println("线程 t2 被中断");
            Thread.currentThread().interrupt(); // 重新设置中断状态
        }
    }
});
t2.start();
try {
    Thread.sleep(3000);
} catch (InterruptedException e) {
    e.printStackTrace();
}
t2.interrupt(); // 中断线程 t2

5. 终止线程(Stop)

        虽然Thread类中有stop()方法,但该方法已被弃用,因为它可能导致线程在执行到一半时被强制终止,从而导致资源泄露或数据不一致。推荐的做法是使用中断机制来优雅地终止线程。

Thread t3 = new Thread(() -> {
    while (!Thread.currentThread().isInterrupted()) {
        System.out.println("线程 t3 正在运行");
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            System.out.println("线程 t3 被中断");
            Thread.currentThread().interrupt(); // 重新设置中断状态
        }
    }
});
t3.start();
try {
    Thread.sleep(3000);
} catch (InterruptedException e) {
    e.printStackTrace();
}
t3.interrupt(); // 中断线程 t3

6. 休眠线程(Sleep)

        使用Thread.sleep()方法使当前线程暂停执行一段时间。这是一个静态方法,调用时会使当前线程进入定时等待(TIMED_WAITING)状态。

public void run() {
    for (int i = 0; i < 5; i++) {
        System.out.println(Thread.currentThread().getName() + " 在运行");
        try {
            Thread.sleep(1000); // 线程休眠1秒钟
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

通过这些操作,可以更好地控制和管理多线程程序的执行流程,从而实现高效、稳定的并发执行。

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值