java 停止thread_java中Thread的停止

aa77b97df26e3b076ec8f74a8dc08d7e.png

在对线程进行停止的使用,我们使用Thread类来进行操作,这里停止的状态分为三种:sleep、join和yield。它们都是使当前的线程停下来,不过在中断时有所区别。下面我们就java中Thread类的三种停止模式,分别带来概念和代码示例的讲解,一起看看都有哪些停止状态吧。

1.sleep

sleep()使当前线程进入停滞状态(阻塞当前线程),让出CPU的使用,以留一定时间给其他线程执行

sleep休眠时不会释放对象的锁public class SleepDemo {

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

Process process = new Process();

Thread thread = new Thread(process);

thread.setName("线程Process");

thread.start();

for (int i = 0; i 

System.out.println(Thread.currentThread().getName() + "-->" + i);

//阻塞main线程,休眠一秒钟

Thread.sleep(1000);

}

}

}

/**

* 线程类

*/

class Process implements Runnable {

@Override

public void run() {

for (int i = 0; i 

System.out.println(Thread.currentThread().getName() + "-->" + i);

//休眠一秒钟

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}

2.join

在一个线程A中执行了线程B的join方法,则A会挂起,等待B执行完毕后再执行后续任务。public static void main(String[] args){

Thread t1 = new Thread();

t1.start();

t1.join();

// 以下代码会在t1执行完毕后打印

System.out.println("t1 finished");

}

3.yield

yield并不意味着退出和暂停,是让步,告诉线程调度如果有人需要,可以先拿去,我过会再执行,没人需要,我继续执行。

调用yield的时候锁并没有被释放。package com.yield;

public class YieldTest extends Thread {

public YieldTest(String name) {

super(name);

}

@Override

public void run() {

for (int i = 1; i <= 50; i++) {

System.out.println("" + this.getName() + "-----" + i);

// 当i为30时,该线程就会把CPU时间让掉,让其他或者自己的线程执行(也就是谁先抢到谁执行)

if (i == 30) {

this.yield();

}

}

}

public static void main(String[] args) {

YieldTest yt1 = new YieldTest("张三");

YieldTest yt2 = new YieldTest("李四");

yt1.start();

yt2.start();

}

}

以上就是java中Thread的停止状态详解,根据需要我们可以在线程,停留在不同的状态中,学会的小伙伴可以分别尝试下代码部分的使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值