Java修炼——暂停线程的四个方法
线程的获取方法: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修炼——暂停线程的四个方法的更多相关文章
- JAVA中创建线程的三种方法及比较
JAVA中创建线程的方式有三种,各有优缺点,具体如下: 一.继承Thread类来创建线程 1.创建一个任务类,继承Thread线程类,因为Thread类已经实现了Runnable接口,然后重写run( ...
- Java如何暂停线程一段时间?
在Java编程中,如何暂停线程一段时间? 以下示例显示如何通过创建sleepThread()方法来暂停线程一段时间. package com.yiibai; public class Suspendi ...
- Java多线程(4)----线程的四种状态
与人有生老病死一样,线程也同样要经历开始(等待).运行.挂起和停止四种不同的状态.这四种状态都可以通过Thread类中的方法进行控制.下面给出了Thread类中和这四种状态相关的方法. 1 // 开始 ...
- Java遍历Map对象的四种方法
在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都实现了Map接口,以下方法适用于任何map实现(HashMap, TreeMap, LinkedHa ...
- Java获取文件Content-Type的四种方法
HTTP Content-Type在线工具 有时候我们需要获取本地文件的Content-Type,已知 Jdk 自带了三种方式来获取文件类型. 另外还有第三方包 Magic 也提供了API.Magic ...
- Java中终止线程的三种方法
终止线程一般建议采用的方法是让线程自行结束,进入Dead(死亡)状态,就是执行完run()方法.即如果想要停止一个线程的执行,就要提供某种方式让线程能够自动结束run()方法的执行.比如设置一个标志来 ...
- Java中创建线程的三种方法以及区别
Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例.Java可以用三种方式来创建线程,如下所示: 1)继承Thread类创建线程 2)实现Runnable接口创建线 ...
- Java中遍历map的四种方法 - 转载
在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...
- java中创建线程的3种方法
1.继承Thread类优点:可以直接使用Thread类中的方法,代码比较简单.缺点:继承Thread类之后不能继承其他类. 2.实现Runable接口优点:实现接口,比影响继承其他类或实现接口.缺点: ...
随机推荐
- python使用openpyxl操作excel总结
安装openpyxl pip install openpyxl 简单示例 from openpyxl import Workbook #创建一个工作薄对象,也就是创建一个excel文档 wb = Wo ...
- phpexcel导出数字带E的解决方法
phpexcel导出数字带E的解决方法 excel之所以带E 是因为按照数字格式来显示了(数字过长的时候) 数字左边或者右边加空格就变成字符串了 那么excel就会按照字符串格式来显示了 就不会带E了
- ZeroC ICE的远程调用框架 AMI与AMD -Why?
在Ice有两种异步使用的方式,AMI和AMD.AMI是异步方法调用,AMD是异步方法调度(分派).前者用在代理端,后者用在饲服实现端. AMI其实就是在代理端,使用Future机制进行异步调用,而不阻 ...
- opencv 6 图像轮廓与图像分割修复 2 使用多边形将轮廓包围
使用多边形将轮廓包围 返回外部矩阵边界(boundingRect()函数) 寻找最小包围矩形(minAreaRect()函数) 寻找最小包围圆形(minEnclosingCircle函数) 用椭圆拟合 ...
- var与let与const
var与let与const都是用来声明变量,但是三者之间也有一些区别 var的使用 var a;//声明变量a var a,b,c;//声明三个变量a,b,c var a,b,c=2;//声明了三个变 ...
- 在阿里云服务器中配置JDK、tomcat、mysql
阿里云服务器搭建配置 linux命令:参考:https://www.cnblogs.com/itdansan/p/8545187.html cat 文件名: 查看文件内容 ctrl+D : 退出查看 ...
- vant-ui的van-area使用
由于官方例子中并没有太多详情,因此记录之,方便以后使用. 1.配置 :area-list="areaList",以初始化全部省市区的数据,其中area.js文件在官方可以下载,放于 ...
- SpringSecurity动态加载用户角色权限实现登录及鉴权
很多人觉得Spring Security实现登录验证很难,我最开始学习的时候也这样觉得.因为我好久都没看懂我该怎么样将自己写的用于接收用户名密码的Controller与Spring Security结 ...
- 解决php使用支付宝SDK报错问题
最近公司将一些项目转移了服务器,后来发现使用支付宝支付时发现出现错误,错误如下: 1 The each() function is deprecated. This message will be s ...
- 20191107-3 beta week 2/2 Scrum立会报告+燃尽图 02
此作业要求参见[https://edu.cnblogs.com/campus/nenu/2019fall/homework/9955] 一.小组情况 队名:扛把子 组长:孙晓宇 组员:宋晓丽 梁梦瑶 ...