35、线程的让步与阻塞
1、线程的让步 Thread.yield( )
当满足某个条件,正在执行的线程把CPU释放出来,然后所有线程争抢cpu
Thread.yield( )
class Person implements Runnable{public void run(){for (int i=0;i<50;i++){System.out.println(Thread.currentThread().getName()+":"+i);if(i%5==0){Thread.yield();}}}
}
public class Test{public static void main(String[] args) {Person p=new Person();Thread t1=new Thread(p);Thread t2=new Thread(p);t1.setName("线程1");t2.setName("线程2");t1.start();;t2.start();
}
}
2、线程的阻塞
main是主线程,在主程序中,子线程A调用join()方法,A线程就在主线程之前执行。但所有子线程也需要竞争cpu。A线程执行完毕之后,主线程不一定紧跟着A线程,主线程需要在A执行完后和其他子线程竞争CPU
class Person implements Runnable{public void run(){for (int i=0;i<50;i++){System.out.println(Thread.currentThread().getName()+":"+i);}}
}
public class Test{public static void main(String[] args) {Person p=new Person();Thread t1=new Thread(p);Thread t2=new Thread(p);t1.setName("线程1");t2.setName("线程2");t1.start();;t2.start();try {t1.join();}catch (Exception e){}for (int i=0;i<20;i++){System.out.println("主线程");}
}
}
35、线程的让步与阻塞相关推荐
- JAVA线程池ThreadPoolExecutor与阻塞队列BlockingQueue .
2019独角兽企业重金招聘Python工程师标准>>> 从Java5开始,Java提供了自己的线程池.每次只执行指定数量的线程,java.util.concurrent.Thread ...
- 转:JAVA线程池ThreadPoolExecutor与阻塞队列BlockingQueue
从Java5开始,Java提供了自己的线程池.每次只执行指定数量的线程,java.util.concurrent.ThreadPoolExecutor 就是这样的线程池.以下是我的学习过程. 首先是构 ...
- Java线程详解(15)-阻塞队列和阻塞栈
Java线程:新特征-阻塞队列 阻塞队列是Java5线程新特征中的内容,Java定义了阻塞队列的接口java.util.concurrent.BlockingQueue,阻塞队列的概念是,一个指定长度 ...
- 使用ThreadPoolExecutor,当提交线程超过maximumPoolSize 会阻塞主线程吗?
今天开会同事说使用线程池,当提交的子线程超过运行的最大线程数,会阻塞主线程,然后我就回复 有拒绝策略,会抛出异常,同时也要确认当线程池满的时候executor.execute方法会不会是阻塞的了,其实 ...
- 【Java 并发编程】线程池机制 ( 线程池执行任务细节分析 | 线程池执行 execute 源码分析 | 先创建核心线程 | 再放入阻塞队列 | 最后创建非核心线程 )
文章目录 一.线程池执行任务细节分析 二.线程池执行 execute 源码分析 一.线程池执行任务细节分析 线程池执行细节分析 : 核心线程数 101010 , 最大小成熟 202020 , 非核心线 ...
- 【Java 并发编程】线程池机制 ( ThreadPoolExecutor 线程池构造参数分析 | 核心线程数 | 最大线程数 | 非核心线程存活时间 | 任务阻塞队列 )
文章目录 前言 一.ThreadPoolExecutor 构造参数 二.newCachedThreadPool 参数分析 三.newFixedThreadPool 参数分析 四.newSingleTh ...
- java 中断线程 wait_Java 线程中断(interrupt)与阻塞 (park)的区别
很多Java开发人员(包括我),尤其是刚进入软件行业的新手,认为Java设置线程中断就是表示线程停止了,不往前执行了, Thread.currentThread().interrupt() 其实不是这 ...
- 对话框中WaitForSingleObject等待线程退出导致程序阻塞的原因及解决
今天在调试程序中发现了程序中出现的一个问题,具体如下: 在对话框中新建一个线程worker thread,当用户点击cancel时,通知该线程函数退出,同时用WaitForSingleObject等待 ...
- 线程中发送消息阻塞问题解决
发送消息时阻塞的两种方案1:此处应post发送消息放到消息队列中,直接send调用响应过程的话如果消息响应未结束则会一直阻塞工作线程2:用send的话在此处开辟工作线程执行逻辑
最新文章
- reddit_如何使用Python创建自定义Reddit通知系统
- 《机器学习思维导图》,一图掌握机器学习知识要点
- xcode升级xcode9 1之后报错swift stdlib tool error
- mysql数据库rpm包_MySQL 8.0官方数据库RPMZIP for Linux/windows x64安装包程序下载
- gogs mysql 报错_docker上对gogs二次开发
- 图神经网络的二阶池化:从节点表示中学习图的表示
- 面向对象之迪米特法则
- RTX5 | 事件标志组03 - 线程同步(逻辑或)
- 10月15日 第一天申请成功
- 【开源社区】如何参与JEECG开源团队?
- OpenShift 之 Quarkus(4)用集成的Prometheus监控Quarkus应用
- java分层model_SpringMVC体系分层模式原理图解
- java boolean 对象_为什么Java后端用Boolean属性筛选不出对象,但改成String类型就可以了?...
- wps单文件版_局域网共享精灵,轻松实现文件共享amp;打印机共享
- poi导出excel
- 谷歌浏览器插件(jsonview)的下载与安装
- java web外文文献_JAVAWeb外文文献毕业设计.doc
- redis列表list常用命令大全
- 码栈使用手册(一)----安装说明
- 数的变幻(小明买书)
热门文章
- 黑金花大理石_请问黑金花大理石是什么样的,有哪些特点?
- 〖Python接口自动化测试实战篇③〗- 什么才是真正的自动化 - 自动化测试的意义又是什么?
- Matlab 用途(我的理解)
- ESP32 之 ESP-IDF 教学(五(2))——使用C++的工程
- 美国计算机科学专业学校排名,美国计算机科学专业排名
- 51nod1355:斐波那契的最小公倍数(数论)
- mybatis缓存的使用及理解
- Webpack5 - 常用Plugin(插件)
- right 微信小程序_js实现微信小程序左右滑动功能
- 影石创新IPO被暂缓审议,科创板上市委质疑其可能存在董事会僵局