Java多线程状态及方法实例解析
作者:戈德里克山谷 发布时间:2021-09-10 22:49:53
标签:Java,多,线程,状态,方法
这篇文章主要介绍了Java多线程状态及方法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
首先介绍线程的五种状态:
新生态:New Thread()
就绪态:准备抢CPU时间片
运行态:抢到了CPU时间片
阻塞态:放弃已经抢到的CPU时间片,且暂时不参与争抢
死亡态:Run运行完了之后
接下来介绍三种方法:线程的阻塞,线程的优先级设置,线程的礼让
public class MutliThreadDemo4 {
public static void main(String[] args) {
threadBlock();
//threadPriority();
//threadYield();
}
/**
* 线程的阻塞
*/
private static void threadBlock() {
//创建Runnable接口实现类的对象
Runnable r = () -> {
for(int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName() + ":" + i);
//线程休眠(由运行状态到阻塞状态,时间过了回到就绪态,重新争抢),直观上表现为停顿打印
try {
Thread.sleep(1000);
}catch(InterruptedException e){
e.printStackTrace();
}
}
};
//实例化
new Thread(r, "甲").start();
}
/**
* 线程的优先级
*/
private static void threadPriority() {
Runnable r = () -> {
for(int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName() + ":" + i);
}
};
Thread t1 = new Thread(r, "甲");
Thread t2 = new Thread(r, "乙");
//设置优先级,必须在开始执行(start)之前
//设置线程的优先级,只是修改这个线程可以去抢到CPU时间片的概率。
//并不是优先级高的线程一定能抢到CPU时间片
//优先级的设置,是一个整数(0,10]的整数,默认是5
t1.setPriority(10);
t2.setPriority(1);
t1.start();
t2.start();
}
/**
* 线程的礼让
*/
private static void threadYield() {
//线程释放自己的CPU资源,由运行状态,回到就绪状态
//匿名内部类
Runnable r = new Runnable() {
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName() + ":" + i);
if (i == 3) {
Thread.yield();
}
}
}
};
Thread thread1 = new Thread(r, "thread-1");
Thread thread2 = new Thread(r, "thread-2");
thread1.start();
thread2.start();
}
}
来源:https://www.cnblogs.com/ggrrbb/p/12289677.html
![](https://www.aspxhome.com/images/zang.png)
![](https://www.aspxhome.com/images/jiucuo.png)
猜你喜欢
- 一、查询中排除标识字段1.1 测试查询@Testpublic void findAllTest() { List&
- OverView今天在复习的时候,突然复习到我们的相机操作,但是对于相机操作,对于我来说比较复杂的是对于权限的操作。所有我们需要对我们的相机
- 本文实例为大家分享了java常用工具类的具体代码,供大家参考,具体内容如下Random随机数工具类package com.jarvis.ba
- dom4j是一个非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源工具。可以在这个地址ht
- 环境:VS2019+Qt5.121. CLR库安装 &nb
- 本文实例为大家分享了java客户端登陆服务器用户名验证的具体实现代码,供大家参考,具体内容如下客户端通过键盘录入用户名,服务端对用户名进行验
- 前言当大家使用mybatis作为持久层框架时,在存储和查询数据时,只需要在mapper.xml文件中配置好对应字段的JdbcType和Jav
- 目录一:spring读取配置或注解的过程二:spring的bean的生命周期2.1:实例化 Instantiation2.2:初始化3: 使
- 最近在使用 url 的 queryString 传递参数时,因为参数的值,被DES加密了,而加密得到的是 Base64的编码字符串类似于:z
- 先说一下对异步和同步的理解:同步调用:调用方在调用过程中,持续等待返回结果。异步调用:调用方在调用过程中,不直接等待返回结果,而是执行其他任
- 相信大家肯定都在电商网站买过东西,当我们看中一件喜欢又想买的东西时,这时候你又不想这么快结账,这时候你就可以放入购物车;就像我们平时去超市买
- 软引用简介软引用是用来表示某个引用会被GC(垃圾处理器)收集的类。当有引用指向某个obj的时候,通常发生GC的时候不会把这个对象处理掉,但是
- 先来看我们以前利用RestTemplate发起远程调用的代码:存在下面的问题:代码可读性差,编程体验不统一参数复杂URL难以维护1. Fei
- 1. JAVA源文件的命名JAVA源文件名必须和源文件中所定义的类的类名相同。2. Package的命名Package名的第一部分应是小写A
- 我们都知道单精度浮点数(Single,float,Real)由32位0或1组成,它具体是如何来的。浮点数的32位N=1符号位(Sign)+8
- Linux下的五种I/O模型1)阻塞I/O(blocking I/O)2)非阻塞I/O (nonblocking I/O)3) I/O复用(
- 本文实例为大家分享了java实现鲜花销售系统的具体代码,供大家参考,具体内容如下一、练习目标1.体会数组的作用2.找到分层开发的感觉3.收获
- 一、数据类型与变量的介绍在程序运行的过程中计算机需要记录大量的状态 数据(这里我们统称数据)。那这些数据都存放在哪呢?程序在运行过程中的数据
- 对JVM运行参数进行修改是JVM性能调优的重要手段,下面介绍在应用程序开发过程中JVM参数设置的几种方式。方式一java程序运行时指定 -D
- 就我们所知道的,java中有子类和父类,子类由于继承父类而形成,那么父类还有没有父类呢?答案是有了,父类的父类就是object类,一切父类都