线程的获取方法:Thread.currentThread() 后面可以加上获取线程的名字 .getName() 这样就成功获取到了线程的名字。

            Sleep会导致当前线程休眠一定时间,进入阻塞状态

            Join会导致调用他的线程进入阻塞状态

            Yield会导致让他线程进入就绪状态

Stop() 方法   The method stop() from the type Thread is deprecated  已经被淘汰 了。机会不使用。

暂停线程之 Sleep() 方法:

  1. package com.bjsxt.MythreadSleep;
  2. public class MythreadSleep extends Thread{
  3. @Override
  4. public void run() {
  5. try {
  6. System.out.println(Thread.currentThread().getName()+"线程开始休眠");
  7. Thread.sleep(3000);
  8. System.out.println(Thread.currentThread().getName()+"线程结束休眠");
  9. } catch (InterruptedException e) {
  10. System.out.println(Thread.currentThread().getName()+"线程休眠异常");
  11. }
  12. }
  13. }
  1. package com.bjsxt.MythreadSleep;
  2. import com.bjsxt.MythreadYield.MythreadYield;
  3. public class TestThreadSleep {
  4. public static void main(String[] args) throws InterruptedException {
  5. MythreadSleep mythreads=new MythreadSleep();
  6. Thread t=new Thread(mythreads);
  7. t.start();
  8. Thread threads=Thread.currentThread();
  9. System.out.println("主线程"+threads.getName()+"开始休眠");
  10. Thread.sleep(4000);
  11. System.out.println("主线程"+threads.getName()+"结束休眠");
  12. }
  13. }

 运行结果:

暂停线程之 join() 方法 :

join() 方法是唯一一个将调用的他的线程进入阻塞状态,然后等待其他进程完成后,它在进去就绪状态,等待CPU的资源调用。

  1. package com.bjsxt.MythreadJoin;
  2. public class MythreadJoin extends Thread{
  3. @Override
  4. public void run() {
  5. for (int i = 0; i <10; i++) {
  6. System.out.println("---------"+Thread.currentThread().getName()+"----->"+i);
  7. }
  8. }
  9. }
  1. package com.bjsxt.MythreadJoin;
  2. public class TestMythread {
  3. public static void main(String[] args) throws InterruptedException {
  4. MythreadJoin mythread=new MythreadJoin();
  5. Thread thread=new Thread(mythread);
  6. thread.start();
  7. for (int i = 0; i <10; i++) {
  8. if (i==4) {
  9. thread.join();
  10. }
  11. System.out.println(Thread.currentThread().getName()+"---->"+i+"------------------");
  12. }
  13. }
  14. }

运行结果:

暂停线程之  yield()  方法:

  1. package com.bjsxt.MythreadYield;
  2. public class MythreadYield extends Thread{
  3. @Override
  4. public void run() {
  5. for (int i = 0; i <10; i++) {
  6. if (i==3) {
  7. Thread.yield();
  8. System.out.println("当前"+Thread.currentThread().getName()+"调用yield()方法,礼让一次");
  9. }
  10. System.out.println(Thread.currentThread().getName()+"******************i="+i);
  11. }
  12. }
  13. }
  1. package com.bjsxt.MythreadYield;
  2. public class TestMythreadYield {
  3. public static void main(String[] args) {
  4. MythreadYield mythread=new MythreadYield();
  5. Thread t=new Thread(mythread);
  6. t.start();
  7. for (int i = 0; i <10; i++) {
  8. if (i==5) {
  9. Thread.yield();
  10. System.out.println("当前"+Thread.currentThread().getName()+"调用yield()方法,礼让一次");
  11. }
  12. System.out.println(Thread.currentThread().getName()+"---------i="+i);
  13. }
  14. }
  15. }

运行结果:

暂停线程之  Stop()  方法:

  1. package com.bjsxt.MythreadStop;
  2. public class MythreadStop extends Thread{
  3. @Override
  4. public void run() {
  5. for (int i = 0; i <10; i++) {
  6. System.out.println(Thread.currentThread().getName()+"-----------------"+i);
  7. }
  8. }
  9. }
  1. package com.bjsxt.MythreadStop;
  2. public class TestMythreadStop {
  3. public static void main(String[] args) {
  4. MythreadStop mythreadStop=new MythreadStop();
  5. Thread thread=new Thread(mythreadStop);
  6. thread.start();
  7. for (int i = 0; i <10; i++) {
  8. if (i==3) {
  9. thread.stop();
  10. }
  11. System.out.println(Thread.currentThread().getName()+"---"+i);
  12. }
  13. }
  14. }

运行结果:

Java修炼——暂停线程的四个方法的更多相关文章

  1. JAVA中创建线程的三种方法及比较

    JAVA中创建线程的方式有三种,各有优缺点,具体如下: 一.继承Thread类来创建线程 1.创建一个任务类,继承Thread线程类,因为Thread类已经实现了Runnable接口,然后重写run( ...

  2. Java如何暂停线程一段时间?

    在Java编程中,如何暂停线程一段时间? 以下示例显示如何通过创建sleepThread()方法来暂停线程一段时间. package com.yiibai; public class Suspendi ...

  3. Java多线程(4)----线程的四种状态

    与人有生老病死一样,线程也同样要经历开始(等待).运行.挂起和停止四种不同的状态.这四种状态都可以通过Thread类中的方法进行控制.下面给出了Thread类中和这四种状态相关的方法. 1 // 开始 ...

  4. Java遍历Map对象的四种方法

    在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都实现了Map接口,以下方法适用于任何map实现(HashMap, TreeMap, LinkedHa ...

  5. Java获取文件Content-Type的四种方法

    HTTP Content-Type在线工具 有时候我们需要获取本地文件的Content-Type,已知 Jdk 自带了三种方式来获取文件类型. 另外还有第三方包 Magic 也提供了API.Magic ...

  6. Java中终止线程的三种方法

    终止线程一般建议采用的方法是让线程自行结束,进入Dead(死亡)状态,就是执行完run()方法.即如果想要停止一个线程的执行,就要提供某种方式让线程能够自动结束run()方法的执行.比如设置一个标志来 ...

  7. Java中创建线程的三种方法以及区别

    Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例.Java可以用三种方式来创建线程,如下所示: 1)继承Thread类创建线程 2)实现Runnable接口创建线 ...

  8. Java中遍历map的四种方法 - 转载

    在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...

  9. java中创建线程的3种方法

    1.继承Thread类优点:可以直接使用Thread类中的方法,代码比较简单.缺点:继承Thread类之后不能继承其他类. 2.实现Runable接口优点:实现接口,比影响继承其他类或实现接口.缺点: ...

随机推荐

  1. python中实例方法,类方法,静态方法简单理解

    按照字面名称来理解的话: 实例方法就是实例化对象的方法,绑定在实例对象上 类方法就是类自己的方法,不需要实例化对象,类自己就是对象,直接绑定在类上 静态方法就是普通的函数,函数作为对象,不过是封装在类 ...

  2. Asp.net Core 系列之--4.事务、日志及错误处理

    ChuanGoing 2019-11-17 这篇原本时想把事务处理.日志处理.错误处理.授权于鉴权一并介绍完的,授权和鉴权我想结合自定义权限来介绍,全部放到这里篇幅可能太长,因此权限部分将会在下篇来介 ...

  3. 012.Kubernetes二进制部署worker节点Flannel

    一 部署flannel 1.1 安装flannel kubernetes 要求集群内各节点(包括 master 节点)能通过 Pod 网段互联互通.flannel 使用 vxlan 技术为各节点创建一 ...

  4. 关于jQuery easyUI 添加合计统计行

    首先在onLoadSuccess中添加计算函数:计算方法按各自业务需要,我做了一个判断非数 然后再在gatagrid表格添加行,$('#div').datagrid('appendRow', {... ...

  5. 领扣(LeetCode)对称二叉树 个人题解

    给定一个二叉树,检查它是否是镜像对称的. 例如,二叉树 [1,2,2,3,4,4,3] 是对称的. 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个 [1,2,2,null,3,nul ...

  6. VLAN实验(4)单臂路由

    1.选择1台Router路由器.2台S3700交换机和4台pc机,并根据实验编址完成此拓扑图. 2.对交换机mengyu-S2建立VLAN (1)建立两个VLAN,VLAN10和VLAN20,并添加描 ...

  7. 性能监视器PerfMon v2.0 是一个流氓的汉化版

    最近在部署一台新设备时,由于懒得翻墙用google下载软件,由一次中了坑.百度搜索出来的这个<性能监视器 v2.0 汉化版>,安装了之后,设备会时不时自动弹出广告.反编译分析了一下,的确就 ...

  8. ffmpeg-3.1.4居然也有这么坑的bug

    近日自己用下载的ffmpeg-3.1.4代码自己编译来用,没想到会碰到这么一下低级坑.我用自己的编译出来的库总是会在用rtsp上传视频时崩掉,起初我还以为自己编译的x264出问题,因为我是绕开使用pk ...

  9. opencv 6 图像轮廓与图像分割修复 2 使用多边形将轮廓包围

    使用多边形将轮廓包围 返回外部矩阵边界(boundingRect()函数) 寻找最小包围矩形(minAreaRect()函数) 寻找最小包围圆形(minEnclosingCircle函数) 用椭圆拟合 ...

  10. 学习记录:《C++设计模式——李建忠主讲》1.设计模式

    1.学习目标 1)理解松耦合设计思想: 2)掌握面向对象设计原则: 3)掌握重构技法改善设计: 4)掌握GOF核心设计模式: 2.定义 每个设计模式描述了一个在我们周围不断重复发生的问题,以及该问题解 ...