`
xielingjiang
  • 浏览: 33507 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Java Threads(1)

阅读更多
一直想深入研究Java线程,弥补Java基础知识的匮乏,然后形成一些言之有物的文章。可惜没有大块的空余时间,只能象堆积木一样,慢慢的往上堆了。

为了解Java线程,从大处入手应该是个不错的主意。我认为首先就需要对Java Platform有一定的了解。我一般会把Java Platform分为4部分:

1、Java Language

Java语言主要是有关Java的语法等

2、Java Class File

Java源码必须编译成二进制的Class文件才能通过VM来运行,关于Class File的结构等

3、Java Virtual Machine

Java虚拟机是Class File的执行引擎,是Java程序能否运行的关键。关于VM的内存管理、指令、线程等

4、Java API

公共的API是任何程序语言必不可少的部分,如果没有API,编写程序非得累死不可。

从Java Platform的4部分可以看出,要了解Java线程,就需要对Java VM和有关线程的API(第3和4)集中火力进行研究。

我们就先从Java VM开始,如果对VM没有丁点概念,我推荐一本非常不错的书:《Inside the Java Virtual Machine》,现在是second edition,作者是Bill Venners。国内已经有人对该书进行了翻译,译者是曹晓钢和蒋靖(感谢),在大多数书店都有出售。

在该书中,有一幅描述Java VM体系结构的图片,我觉得非常的好,看过这一幅图片就会对VM有一个非常直接的印象,然后如庖丁解牛般的进行分解就会起到事倍功半的效果。




##########################################


实际上,我们一般会对“Java虚拟机”这个术语有三种不同的理解:
1、抽象规范
Sun公司制定的《The Java Virtual Machine Specification》就是抽象规范,任何想实现Java VM就必须遵守这个规范。
2、具体实现
所有的JDK中都会包含Java VM的具体实现和Java API,Sun、IBM和Bea等几家厂商就实现了各自的VM,它们的实现细节是一定是不同的,但是它们都必须遵守抽象规范。
3、正在运行的实例
当我们编写的Java程序运行时,就是有VM的实例在运行。

在考虑底层系统时,我们一般会比较注意CPU和存储器,CPU完成运算指令调度,存储器存储运算中间结果,这也是冯.偌依曼机最重要的两部分。

冯.偌依曼机的基本思路:
* 采用二进制形式表示数据和指令;
* 程序与数据预先存入主存,工作时连续自动高速顺序执行.
* 由运算器,存储器,控制器,I/O设备五大部分组成。

它的核心就是“存储程序”的思想,我们从中可以看出Java VM与冯.偌依曼机的基本思路相当一致。

从前一篇blog的经典图片中,我们就能完全理解VM的整体结构,也会明白虚拟机结构中最重要的两部分:
1、运行时数据区
就是存储器,包含多种不同形式的数据区,譬如方法区、堆和Java栈等。运行时数据区可以存储字节码、对象、局部变量以及运算的中间结果等。
2、执行引擎
任何Java VM实现的核心都是它的执行引擎,有点类似于CPU,执行引擎进行指令调度,Java VM有自身、独立的指令集。

执行引擎与Java VM一样,也有三种不同的理解,包括抽象规范、具体实现和运行时的实例。

作为运行时实例的执行引擎就是一个线程,正在运行的Java程序中的每一个线程都是一个独立的虚拟机执行引擎的实例。

Java VM一般会存在两种不同的线程:一种是对用户程序不可见的,这样的线程不需要是实现的执行引擎的实例,譬如GC;另外一种就是属于用户运行程序的线程,这些线程都是在实际工作的执行引擎。

在《The Java Virtual Machine Specification》的第8章中详细介绍了“线程和锁”,它主要就是规范了共享主存储器与Java VM线程的交互,也就是上述两者的交互。
分享到:
评论

相关推荐

    Java Threads

    《Java Threads》是Java并发编程领域的一本经典著作,由Scott Oaks和Doug Lea合作撰写,由O'Reilly出版社出版。这本书深入浅出地讲解了Java平台上的多线程编程技术,是Java开发者深入理解并发编程的必备参考资料。在...

    Java Threads Third Edition.chm

    Java Threads Third Edition.chm

    show-busy-java-threads.sh文件

    1. 找到Java进程ID:可以使用`jps`命令列出所有Java进程,然后找到目标应用的进程ID。 2. 运行脚本:执行`./show-busy-java-threads.sh <pid>`,将`<pid>`替换为目标进程ID。 3. 分析结果:查看脚本输出的线程堆栈...

    linux实用脚本show-busy-java-threads

    1. **show-busy-java-threads** 这个脚本的主要功能是显示正在忙碌的Java线程,帮助我们了解Java应用的运行状况。在多线程环境中,如果某个线程长时间处于忙碌状态,可能会导致性能问题或者阻塞其他线程。通过运行...

    java Threads

    Java线程是多任务编程的核心概念,特别是在Java这种支持并发执行的语言中。本文将深入探讨Java线程的创建、管理以及相关同步机制,基于提供的压缩包文件中的章节名称,我们可以推测这些章节可能涵盖线程的基本概念到...

    show-busy-java-threads

    上传到 linux线上服务器,执行 chmod -R 777 show-busy-java-threads 执行权限。 ./show-busy-java-threads 查看执行占用cpu偏高的 线程,方便我们排查定位。

    Java Threads and the Concurrency Utilities

    《Java多线程与并发工具》一书深入讲解了Java中线程API和并发工具的使用,这些内容是Java语言中最强大但也最具挑战性的API和语言特性之一。对于初学者而言,利用这些特性编写正确的多线程应用程序通常是非常困难的。...

    Java.Threads.and.the.Concurrency.Utilities.1484216997

    Threads and the Concurrency Utilities helps all Java developers master and use these capabilities effectively. This book is divided into two parts of four chapters each. Part 1 focuses on the Thread...

    Java.Threads.3rd.Edition.txt

    根据提供的文件信息,我们可以推断出这是一本关于Java线程技术的书籍——《Java Threads 第三版》。下面将从书中的各个章节提取并总结关键知识点。 ### 一、绪论 #### 5.31.3 为什么需要线程? 在现代编程中,...

    Java.Threads.3rd.Edition(chm)

    This book is intended for programmers of all levels who need to learn to use threads within Java programs. This includes developers who have previously used Java and written threaded programs; J2SE ...

    Java Threads Third Edition

    《Java Threads Third Edition》是Java多线程编程领域的一本经典著作,全面深入地探讨了Java平台上的线程管理和同步技术。这本书详细对比了JDK 1.4和JDK 1.5之间的差异,帮助开发者理解不同版本下线程处理的进化与...

    Java Threads 2rd

    ### Java Threads 2rd #### 书名:Java Threads 2rd 本书由Scott Oaks与Henry Wong合著,是关于Java线程技术的权威指南。它深入探讨了Java中的线程概念、API以及如何在多处理器环境中高效地利用线程进行编程。 ##...

    show-busy-java-threads.sh

    java线程定位脚本

    APress-Taming-Java-Threads-Code.rar_taming java threads_threads

    1. **线程基础**:首先,书中介绍了Java中的线程基础知识,包括线程的创建方式(通过实现Runnable接口或继承Thread类)、线程的生命周期(新建、就绪、运行、阻塞、死亡)以及线程的状态转换。此外,还讲解了线程...

    Java Threads and the Concurrency Utilities 无水印pdf

    Java Threads and the Concurrency Utilities 英文无水印pdf pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权...

    Introduction to Java Threads

    ### Java线程介绍 #### 关于本教程 本教程旨在为Java程序员提供关于线程的基础知识,包括线程的概念、用途以及如何编写简单的多线程程序。此外,本教程还会探讨更复杂的线程应用程序的基本构建模块,如在不同线程...

Global site tag (gtag.js) - Google Analytics