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、线程的让步与阻塞相关推荐

  1. JAVA线程池ThreadPoolExecutor与阻塞队列BlockingQueue .

    2019独角兽企业重金招聘Python工程师标准>>> 从Java5开始,Java提供了自己的线程池.每次只执行指定数量的线程,java.util.concurrent.Thread ...

  2. 转:JAVA线程池ThreadPoolExecutor与阻塞队列BlockingQueue

    从Java5开始,Java提供了自己的线程池.每次只执行指定数量的线程,java.util.concurrent.ThreadPoolExecutor 就是这样的线程池.以下是我的学习过程. 首先是构 ...

  3. Java线程详解(15)-阻塞队列和阻塞栈

    Java线程:新特征-阻塞队列 阻塞队列是Java5线程新特征中的内容,Java定义了阻塞队列的接口java.util.concurrent.BlockingQueue,阻塞队列的概念是,一个指定长度 ...

  4. 使用ThreadPoolExecutor,当提交线程超过maximumPoolSize 会阻塞主线程吗?

    今天开会同事说使用线程池,当提交的子线程超过运行的最大线程数,会阻塞主线程,然后我就回复 有拒绝策略,会抛出异常,同时也要确认当线程池满的时候executor.execute方法会不会是阻塞的了,其实 ...

  5. 【Java 并发编程】线程池机制 ( 线程池执行任务细节分析 | 线程池执行 execute 源码分析 | 先创建核心线程 | 再放入阻塞队列 | 最后创建非核心线程 )

    文章目录 一.线程池执行任务细节分析 二.线程池执行 execute 源码分析 一.线程池执行任务细节分析 线程池执行细节分析 : 核心线程数 101010 , 最大小成熟 202020 , 非核心线 ...

  6. 【Java 并发编程】线程池机制 ( ThreadPoolExecutor 线程池构造参数分析 | 核心线程数 | 最大线程数 | 非核心线程存活时间 | 任务阻塞队列 )

    文章目录 前言 一.ThreadPoolExecutor 构造参数 二.newCachedThreadPool 参数分析 三.newFixedThreadPool 参数分析 四.newSingleTh ...

  7. java 中断线程 wait_Java 线程中断(interrupt)与阻塞 (park)的区别

    很多Java开发人员(包括我),尤其是刚进入软件行业的新手,认为Java设置线程中断就是表示线程停止了,不往前执行了, Thread.currentThread().interrupt() 其实不是这 ...

  8. 对话框中WaitForSingleObject等待线程退出导致程序阻塞的原因及解决

    今天在调试程序中发现了程序中出现的一个问题,具体如下: 在对话框中新建一个线程worker thread,当用户点击cancel时,通知该线程函数退出,同时用WaitForSingleObject等待 ...

  9. 线程中发送消息阻塞问题解决

    发送消息时阻塞的两种方案1:此处应post发送消息放到消息队列中,直接send调用响应过程的话如果消息响应未结束则会一直阻塞工作线程2:用send的话在此处开辟工作线程执行逻辑

最新文章

  1. reddit_如何使用Python创建自定义Reddit通知系统
  2. 《机器学习思维导图》,一图掌握机器学习知识要点
  3. xcode升级xcode9 1之后报错swift stdlib tool error
  4. mysql数据库rpm包_MySQL 8.0官方数据库RPMZIP for Linux/windows x64安装包程序下载
  5. gogs mysql 报错_docker上对gogs二次开发
  6. 图神经网络的二阶池化:从节点表示中学习图的表示
  7. 面向对象之迪米特法则
  8. RTX5 | 事件标志组03 - 线程同步(逻辑或)
  9. 10月15日 第一天申请成功
  10. 【开源社区】如何参与JEECG开源团队?
  11. OpenShift 之 Quarkus(4)用集成的Prometheus监控Quarkus应用
  12. java分层model_SpringMVC体系分层模式原理图解
  13. java boolean 对象_为什么Java后端用Boolean属性筛选不出对象,但改成String类型就可以了?...
  14. wps单文件版_局域网共享精灵,轻松实现文件共享amp;打印机共享
  15. poi导出excel
  16. 谷歌浏览器插件(jsonview)的下载与安装
  17. java web外文文献_JAVAWeb外文文献毕业设计.doc
  18. redis列表list常用命令大全
  19. 码栈使用手册(一)----安装说明
  20. 数的变幻(小明买书)

热门文章

  1. 黑金花大理石_请问黑金花大理石是什么样的,有哪些特点?
  2. 〖Python接口自动化测试实战篇③〗- 什么才是真正的自动化 - 自动化测试的意义又是什么?
  3. Matlab 用途(我的理解)
  4. ESP32 之 ESP-IDF 教学(五(2))——使用C++的工程
  5. 美国计算机科学专业学校排名,美国计算机科学专业排名
  6. 51nod1355:斐波那契的最小公倍数(数论)
  7. mybatis缓存的使用及理解
  8. Webpack5 - 常用Plugin(插件)
  9. right 微信小程序_js实现微信小程序左右滑动功能
  10. 影石创新IPO被暂缓审议,科创板上市委质疑其可能存在董事会僵局