http://blog.csdn.net/dabing69221/article/details/17426953

前言:

前几天复习了一下多线程,发现有许多网上讲的都很抽象,所以,自己把网上的一些案例总结了一下!

一. Thread.yield( )方法:

使当前线程从执行状态(运行状态)变为可执行态(就绪状态)。cpu会从众多的可执行态里选择,也就是说,当前也就是刚刚的那个线程还是有可能会被再次执行到的,并不是说一定会执行其他线程而该线程在下一次中不会执行到了。

Java线程中有一个Thread.yield( )方法,很多人翻译成线程让步。顾名思义,就是说当一个线程使用了这个方法之后,它就会把自己CPU执行的时间让掉,让自己或者其它的线程运行。

打个比方:现在有很多人在排队上厕所,好不容易轮到这个人上厕所了,突然这个人说:“我要和大家来个竞赛,看谁先抢到厕所!”,然后所有的人在同一起跑线冲向厕所,有可能是别人抢到了,也有可能他自己有抢到了。我们还知道线程有个优先级的问题,那么手里有优先权的这些人就一定能抢到厕所的位置吗? 不一定的,他们只是概率上大些,也有可能没特权的抢到了。

例子:

  1. package com.yield;
  2. public class YieldTest extends Thread {
  3. public YieldTest(String name) {
  4. super(name);
  5. }
  6. @Override
  7. public void run() {
  8. for (int i = 1; i <= 50; i++) {
  9. System.out.println("" + this.getName() + "-----" + i);
  10. // 当i为30时,该线程就会把CPU时间让掉,让其他或者自己的线程执行(也就是谁先抢到谁执行)
  11. if (i == 30) {
  12. this.yield();
  13. }
  14. }
  15. }
  16. public static void main(String[] args) {
  17. YieldTest yt1 = new YieldTest("张三");
  18. YieldTest yt2 = new YieldTest("李四");
  19. yt1.start();
  20. yt2.start();
  21. }
  22. }

运行结果:

第一种情况:李四(线程)当执行到30时会CPU时间让掉,这时张三(线程)抢到CPU时间并执行。

第二种情况:李四(线程)当执行到30时会CPU时间让掉,这时李四(线程)抢到CPU时间并执行。

最新文章

  1. 【PHP自定义显示系统级别的致命错误和用户级别的错误】
  2. 关于 MAXScript 逐行写入文本
  3. Samy XSS Worm之源码讲解
  4. html5 getComputedStyle + resize 实现动态宽高度等比响应式页面设计
  5. 【Go】为什么用go; Golang Erlang 前世今生
  6. cocos2d-x lua 实现状态机
  7. UpdatePanel + 弹出框
  8. iOS学习之Runtime(一)
  9. 《Windows驱动开发技术详解》之驱动程序的同步处理
  10. TensorFlow 安装详解
  11. JavaScript随机数类型
  12. redis 资料
  13. 《xxx系统》质量属性战术
  14. IP报文头详解
  15. pdf.js插件使用记录,在线打开pdf
  16. InstallShield2015制作安装包----------安装后实现电脑开机自启动
  17. WAF Bypass数据库特性(Mysql探索篇)
  18. /etc/redhat-release
  19. 【Spring Boot &amp;&amp; Spring Cloud系列】构建Springboot项目 实现restful风格接口
  20. zendstudio 设置默认编码 utf-8 gbk

热门文章

  1. 完全原生javascript简约日历插件,js、html
  2. Nginx 配置跨域权限
  3. Python下Mysql数据连接池——单例
  4. [Activator- HelloAkka] Define our Messages
  5. Trim a Binary Search Tree
  6. Resharper 的快捷键
  7. Django的模型层
  8. jQuery使用最广泛的javascript函数库
  9. react里面stateless函数的默认参数
  10. html表格设置