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

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

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

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

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

暂停线程之 Sleep() 方法:

package com.bjsxt.MythreadSleep;

public class MythreadSleep extends Thread{
@Override
public void run() { try {
System.out.println(Thread.currentThread().getName()+"线程开始休眠");
Thread.sleep(3000);
System.out.println(Thread.currentThread().getName()+"线程结束休眠");
} catch (InterruptedException e) {
System.out.println(Thread.currentThread().getName()+"线程休眠异常"); }
}
}
package com.bjsxt.MythreadSleep;

import com.bjsxt.MythreadYield.MythreadYield;

public class TestThreadSleep {
public static void main(String[] args) throws InterruptedException {
MythreadSleep mythreads=new MythreadSleep();
Thread t=new Thread(mythreads);
t.start();
Thread threads=Thread.currentThread();
System.out.println("主线程"+threads.getName()+"开始休眠");
Thread.sleep(4000);
System.out.println("主线程"+threads.getName()+"结束休眠");
}
}

 运行结果:

暂停线程之 join() 方法 :

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

package com.bjsxt.MythreadJoin;

public class MythreadJoin extends Thread{
@Override
public void run() {
for (int i = 0; i <10; i++) {
System.out.println("---------"+Thread.currentThread().getName()+"----->"+i);
}
}
}
package com.bjsxt.MythreadJoin;

public class TestMythread {
public static void main(String[] args) throws InterruptedException {
MythreadJoin mythread=new MythreadJoin();
Thread thread=new Thread(mythread);
thread.start();
for (int i = 0; i <10; i++) {
if (i==4) {
thread.join();
}
System.out.println(Thread.currentThread().getName()+"---->"+i+"------------------");
}
}
}

运行结果:

暂停线程之  yield()  方法:

package com.bjsxt.MythreadYield;

public class MythreadYield extends Thread{
@Override
public void run() {
for (int i = 0; i <10; i++) {
if (i==3) {
Thread.yield();
System.out.println("当前"+Thread.currentThread().getName()+"调用yield()方法,礼让一次");
}
System.out.println(Thread.currentThread().getName()+"******************i="+i);
}
}
}
package com.bjsxt.MythreadYield;

public class TestMythreadYield {
public static void main(String[] args) {
MythreadYield mythread=new MythreadYield();
Thread t=new Thread(mythread);
t.start(); for (int i = 0; i <10; i++) {
if (i==5) {
Thread.yield();
System.out.println("当前"+Thread.currentThread().getName()+"调用yield()方法,礼让一次");
}
System.out.println(Thread.currentThread().getName()+"---------i="+i);
}
}
}

运行结果:

暂停线程之  Stop()  方法:

package com.bjsxt.MythreadStop;

public class MythreadStop extends Thread{
@Override
public void run() {
for (int i = 0; i <10; i++) {
System.out.println(Thread.currentThread().getName()+"-----------------"+i);
}
}
}
package com.bjsxt.MythreadStop;

public class TestMythreadStop {
public static void main(String[] args) {
MythreadStop mythreadStop=new MythreadStop();
Thread thread=new Thread(mythreadStop);
thread.start();
for (int i = 0; i <10; i++) {
if (i==3) {
thread.stop();
}
System.out.println(Thread.currentThread().getName()+"---"+i);
}
}
}

运行结果:

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. linux 自启动 | 三种方式自启动

    linux 实现自启动有多种方式,通过Linux 底层启动原理介绍,便可以理解以下几种方式 这里简单介绍一下这几种方式 一.自定义开机程序   /etc/rc.d/rc.local  1.vim  / ...

  2. django 之创建自己的模板(使用案例)

    Django 创建自己的模板篇(实例) 此处需要创建模板,主要是对自己的模板进行扩展: 一般是扩展模板的tag和filter两个功能.可以用来创建你自己的tag和filter功能库. 创建模板库 分为 ...

  3. 单元测试JUnit案例

    被测试模块 package packagedemo; public class Largest { public int minimal(int [] array1) { int index = 0 ...

  4. T-SQL Part XII: Access Remote SQL Server

    要链接远程的SQL Server,需要一下几个步骤(以下的步骤都是在远程系统上进行): 确认远程SQL Server所监听的端口号 官方的文档是使用SQL Server Configuration M ...

  5. vue项目iframe的传值问题

    前言 项目需要,我需要引入一个已经封装好的浏览器插件.插件只能以html的方式调用, 所以.我把插件的使用封装了一个html页面.vue项目则利用iframe的方式引入. 到这里我就遇到了一个问题,那 ...

  6. 面试官问我:谈谈对Java GC的了解?回答完让我回家等消息....

    JVM的运行数据区 首先我简单来画一张 JVM的结构原理图,如下. 我们重点关注 JVM在运行时的数据区,你可以看到在程序运行时,大致有5个部分. 1.方法区 不止是存“方法”,而是存储整个 clas ...

  7. nodejs+nginx+mongdb+redis安装学习笔记(之nodejs安装)

    基础环境 本文安装示例使用ubuntu-14.10-server 64位 操作系统,并没有在其他系统中测试 第一步:安装Nodejs 1.通过apt-get install 安装 (1)下载安装deb ...

  8. htm&css 颜色的浮动

    目标样式 目标分析: 由图可知,整个色板可以分为三块 可以理解为一个大的盒子包含了三个小的盒子,定义如下 LEFT的定义方式 TOP的定义方式 class为bottom的块最为复杂,但分析方法也是异曲 ...

  9. Shell - 长 ping 脚本监控网络时延

    生产环境中, 网络时延是一个很重要的指标. 为了方便检查网络时延的大小, 我们可以通过ping命令实现长时间的网络监控. 1 ping 命令的使用 1.1 常用参数 -i: 每次执行ping操作的间隔 ...

  10. css三大特效之优先级

    1.什么是优先级作用:当多个选择器选中同一个标签,并且给同一个标签设置相同的属性时,如何层叠就由优先级来确定