Java运行系统在很多方面依赖于线程,所有的类库设计都考虑到多线程。实际上,Java使用线程来使整个环境异步。这有利于通过防止CPU循环的浪费来减少无效部分。

为更好的理解多线程环境的优势可以将它与它的对照物相比较。单线程系统的处理途径是使用一种叫作轮询的事件循环方法。

在该模型中,单线程控制在一无限循环中运行,轮询一个事件序列来决定下一步做什么。一旦轮询装置返回信号表明,已准备好读取网络文件,事件循环调度控制管理到适当的事件处理程序。

直到事件处理程序返回,系统中没有其他事件发生。这就浪费了CPU时间。这导致了程序的一部分独占了系统,阻止了其他事件的执行。总的来说,单线程环境,当一个线程因为等待资源时阻塞(block,挂起执行),整个程序停止运行。

Java多线程的优点在于取消了主循环/轮询机制。一个线程可以暂停而不影响程序的其他部分。例如,当一个线程从网络读取数据或等待用户输入时产生的空闲时间可以被利用到其他地方。

多线程允许活的循环在每一帧间隙中沉睡一秒而不暂停整个系统。在Java程序中出现线程阻塞,仅有一个线程暂停,其他线程继续运行。

线程存在于好几种状态。线程可以正在运行。只要获得CPU时间它就可以运行。运行的线程可以被挂起,并临时中断它的执行。一个挂起的线程可以被恢复(resume,允许它从停止的地方继续运行。一个线程可以在等待资源时被阻塞(block)。在任何时候,线程可以终止,这立即中断了它的运行。一旦终止,线程不能被恢复。

java 线程模型_Java基础篇之Java线程模型相关推荐

  1. java单线程循环调度_Java基础篇之Java线程模型

    原标题:Java基础篇之Java线程模型 Java运行系统在很多方面依赖于线程,所有的类库设计都考虑到多线程.实际上,Java使用线程来使整个环境异步.这有利于通过防止CPU循环的浪费来减少无效部分. ...

  2. java peek函数_基础篇:JAVA.Stream函数,优雅的数据流操作

    写在开头:本文是转载于掘金上的一篇文章,已获得原作者授权,我会在文章最后放上原作者和原文链接. 前言 平时操作集合数据,我们一般都是for或者iterator去遍历,不是很好看.java提供了Stre ...

  3. java display.getdefault()_java基础(十一 )-----反射——Java高级开发必须懂的

    本文我们通过一个实际的例子来演示反射在编程中的应用,可能之前大家对反射的学习,仅仅是停留在概念层面,不知道反射究竟应用在哪,所以是一头雾水.相信通过这篇教程,会让你对反射有一个更深层次的认知. 概念 ...

  4. java分层命名_JAVA基础篇(5)-POJO的命名规则

    源起于alibaba的开发手册类的命名规范 参考自--知乎上的回答 变脸命名规范 不同类型的对象在架构设计中用于不同的用途,如下的分层架构表示各个POJO的用途.为什么要在分层架构中国,定义这些POJ ...

  5. java getinstance 反射_Java 基础篇之反射

    使用反射获取程序运行时的对象和类的真实信息. 获取 Class 对象 每个类被加载之后,系统会为该类生成一个对应的 Class 对象,通过该 Class 对象可以访问到 JVM 中的这个类. 使用 C ...

  6. Java学习笔记之基础篇

    Java学习笔记之基础篇 目录 Java如何体现平台的无关性? 面向对象(OO)的理解 面向对象和面向过程编程的区别 面向对象三大特征 静态绑定和动态绑定(后期绑定) 延伸:类之间的关系 组合(聚合) ...

  7. JAVA学习之路--基础篇三

    目录 关于Java中从键盘输入的语句 nextxxx().next().nextLine()的区别 语句 if和if else语句 Switch语句 for语句 while和do..while bre ...

  8. Java程序设计语言(基础篇)机械工业出版社 原属第10版

    链接:https://pan.baidu.com/s/1txoB3sk0SdT1u8RpS2x-Kg  提取码:rxkd  Java程序设计语言(基础篇)机械工业出版社 原属第10版 外加一本Java ...

  9. [转载] JAVA语言程序设计(基础篇)第十版课后题答案(第一章)

    参考链接: Java中的Scanner和nextChar() JAVA语言程序设计(基础篇)第十版课后题答案 第一章 第二题 /** Created by ysy on 2018/7/6. */ pu ...

最新文章

  1. 2022-2028年中国EBA树脂(乙烯丙烯酸丁酯)产业竞争现状及发展前景规划报告
  2. 仿美团外卖的全栈项目(vue+node+mongodb)带支付-大三求实习
  3. R语言中如何计算C-Statistics?几种计算方法详解
  4. 基于VTKITK的Qt应用程序开发
  5. Delphi中使用ListView和TreeView的Item中的Data可能被忽略的内存泄漏
  6. FastDFS5.02安装说明
  7. 封装log4cp p
  8. 初探react,用react实现一个todoList功能
  9. 【原】UIView实现点击着重效果的解决方案
  10. 基于Ajax的应用程序架构汇总(三)
  11. 项目管理:项目经理要具备的技能
  12. 計算機二級-java08
  13. Labview-隧道 移位寄存器
  14. 派生类对基类成员的访问控制之公有继承
  15. 【渝粤教育】广东开放大学 标准的研制与编制 形成性考核 (35)
  16. FR多sheet的内置检验和JS校验, 数据集范围校验;填报存在时不提交并提示已存在
  17. 如何在没有域的环境中搭建AlwaysOn(一)
  18. 360与QQ大战,网友昨晚热论看大片
  19. 高等数学基础:求导总结
  20. Android Q设备唯一标识符(Device ID)获取

热门文章

  1. C++ STL 四种智能指针
  2. Android开发之RecyclerView动态添加item长按删除item源码
  3. java. 端序_c代码测试本机处理器的端序
  4. Mysql数据库开发的36条原则
  5. mysql group_concat
  6. redis缓存数据表
  7. 最终计算供应链管理生产计划排程逻辑管理
  8. UVA 11210 中国麻将
  9. Oracle正则表达式函数:regexp_like、regexp_substr、regexp_instr、regexp_replace
  10. java 子线程退出_java – 在子线程完成执行之前主线程将退出吗?