电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Java Thread in JVM

瀏覽:3日期:2024-07-01 09:45:18
內容: 本文從JVM的角度探討Java Thread的語法和編譯結果。如果需要獲得第一手資料,請直接訪問以下的資源——Java語言規(guī)范,Java虛擬機規(guī)范中有關線程的定義說明。本文旨在介紹這些比較重要的線程相關的規(guī)范,基本上不另作發(fā)揮。(除了提到微軟的“公共語言基礎構造。:-)Java Language Specificationhttp://java.sun.com/docs/books/jls/second_edition/html/classes.doc.html#30531JVM Specificationhttp://java.sun.com/docs/books/vmspec/2nd-edition/html/Compiling.doc.html#6530http://java.sun.com/docs/books/vmspec/2nd-edition/html/Instructions2.doc9.htmlhttp://java.sun.com/docs/books/vmspec/2nd-edition/html/Threads.doc.htmlMicrosoft CLI -- Common Language Infrastructure (sorry, off the topic :-)http://msdn.microsoft.com/net/ecma/1.synchronized method 的java語言規(guī)范詳見http://java.sun.com/docs/books/jls/second_edition/html/classes.doc.html#30531。用synchronized關鍵字修飾的方法,分為兩種情況:(static)靜態(tài)方法,和實例方法。(static)靜態(tài)方法的“鎖是這個擁有這個方法的對象的Class對象;實例方法的“鎖是this,擁有這個方法的當前對象實例。怎么理解這段話,看一看下面的例子就明白了。下面兩段代碼的效果完全相同。代碼1 ==代碼2。代碼1:class Test {int count;synchronized void bump() { count++; }static int classCount;static synchronized void classBump() {classCount++;}}代碼2:class BumpTest {int count;void bump() {synchronized (this) {count++;}}static int classCount;static void classBump() {try {synchronized (Class.forName('BumpTest')) {classCount++;}} catch (ClassNotFoundException e) {...}}}2.synchronized關鍵字的編譯結果這一節(jié),我們來看一看synchronized關鍵字編譯之后的java虛擬機指令是什么。如果需要第一手資料,請參見java虛擬機規(guī)范相關的部分http://java.sun.com/docs/books/vmspec/2nd-edition/html/Compiling.doc.html#6530這段規(guī)范里面講到,java虛擬機規(guī)范提供兩條指令,monitorenter和monitorexit,來支持線程。但是對于上一節(jié)講到的,用synchronized修飾的方法來說,并不使用這兩個方法,而只是簡單地用ACC_SYNCHRONIZED標志修飾。虛擬機調用方法的時候會檢查這個標志,進行同步。synchronized語句的編譯結果對應monitorenter和monitorexit兩條指令。比如,下面的代碼:void onlyMe(Foo f) {synchronized(f) {doSomething();}}的編譯結果是Method void onlyMe(Foo)0 aload_1 // Push f 1 astore_2 // Store it in local variable 22 aload_2 // Push local variable 2 (f)3 monitorenter // Enter the monitor associated with f4 aload_0 // Holding the monitor, pass this and...5 invokevirtual #5 // ...call Example.doSomething()V8 aload_2 // Push local variable 2 (f)9 monitorexit // Exit the monitor associated with f10 return // Return normally11 aload_2 // In case of any throw, end up here12 monitorexit // Be sure to exit monitor...13 athrow // ...then rethrow the value to the invoker3.monitorenter和monitorexit詳見http://java.sun.com/docs/books/vmspec/2nd-edition/html/Instructions2.doc9.htmlmonitorenter定義的一段節(jié)錄:Operation : Enter monitor for objectOperand Stack : ..., objectref ... Description :The objectref must be of type reference.Each object has a monitor associated with it. The thread that executes monitorenter gains ownership of the monitor associated with objectref. If another thread already owns the monitor associated with objectref, the current thread waits until the object is unlocked, then tries again to gain ownership. If the current thread already owns the monitor associated with objectref, it increments a counter in the monitor indicating the number of times this thread has entered the monitor. If the monitor associated with objectref is not owned by any thread, the current thread becomes the owner of the monitor, setting the entry count of this monitor to 1.這段話的意思是說,monitorenter操作的目標一定要是一個對象,類型是reference。Reference實際就是堆里的一個存放對象的地址。每個對象(reference)都有一個monitor對應,如果有其它的線程獲取了這個對象的monitor,當前的線程就要一直等待,直到獲得monitor的線程放棄monitor,當前的線程才有機會獲得monitor。如果monitor沒有被任何線程獲取,那么當前線程獲取這個monitor,把monitor的entry count設置為1。表示這個monitor被1個線程占用了。當前線程獲取了monitor之后,會增加這個monitor的時間計數,來記錄當前線程占用了monitor多長時間。我們看到,monitor這個詞在java虛擬機規(guī)范規(guī)定出現,但是在java語言和API文檔里面并沒有出現。monitor是藏在線程同步后面的原理和概念。4.Threads and Locks詳見http://java.sun.com/docs/books/vmspec/2nd-edition/html/Threads.doc.html。這段規(guī)范詳細地介紹了thread和lock的原理。下面給出這段規(guī)范的highlight。8.4 Nonatomic Treatment of double and long Variables (double和long類型的非原子操作。)8.7 Rules for volatile Variables8.10 Example: Possible Swap8.11 Example: Out-of-Order Writes如果對列出的這些highlight感興趣,請訪問相應的java虛擬機規(guī)范網址。5.Why specification?本文主要討論java相關規(guī)范的內容。規(guī)范文檔非常重要,尤其對于java,C#這種生成中間代碼的語言來說。上面說的是java的相關規(guī)范。這里順便提一下微軟.Net的相關規(guī)范。微軟的“公共語言基礎構造規(guī)范:Microsoft CLI -- Common Language Infrastructure (sorry, off the topic :-)http://msdn.microsoft.com/net/ecma/這個網址上有C#語言規(guī)范,CLI規(guī)范的下載。Enjoy it. :-)出處 wang hailong Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd
標簽: Java
相關文章:
主站蜘蛛池模板: 手持式线材张力计-套帽式风量罩-深圳市欧亚精密仪器有限公司 | 东莞画册设计_logo/vi设计_品牌包装设计 - 华略品牌设计公司 | 瑞典Blueair空气净化器租赁服务中心-专注新装修办公室除醛去异味服务! | 雨燕360体育免费直播_雨燕360免费NBA直播_NBA篮球高清直播无插件-雨燕360体育直播 | 乐考网-银行从业_基金从业资格考试_初级/中级会计报名时间_中级经济师 | 南京欧陆电气股份有限公司-风力发电机官网 | 小型手持气象站-空气负氧离子监测站-多要素微气象传感器-山东天合环境科技有限公司 | 六维力传感器_三维力传感器_二维力传感器-南京神源生智能科技有限公司 | 硬质合金模具_硬质合金非标定制_硬面加工「生产厂家」-西迪技术股份有限公司 | 安徽免检低氮锅炉_合肥燃油锅炉_安徽蒸汽发生器_合肥燃气锅炉-合肥扬诺锅炉有限公司 | 西门子伺服控制器维修-伺服驱动放大器-828D数控机床维修-上海涌迪 | 在线浊度仪_悬浮物污泥浓度计_超声波泥位计_污泥界面仪_泥水界面仪-无锡蓝拓仪表科技有限公司 | 针焰试验仪,灼热丝试验仪,漏电起痕试验仪,水平垂直燃烧试验仪 - 苏州亚诺天下仪器有限公司 | 刺绳_刀片刺网_刺丝滚笼_不锈钢刺绳生产厂家_安平县浩荣金属丝网制品有限公司-安平县浩荣金属丝网制品有限公司 | 高效节能电机_伺服主轴电机_铜转子电机_交流感应伺服电机_图片_型号_江苏智马科技有限公司 | 作文导航网_作文之家_满分作文_优秀作文_作文大全_作文素材_最新作文分享发布平台 | 脉冲除尘器,除尘器厂家-淄博机械 | 民用音响-拉杆音响-家用音响-ktv专用音响-万昌科技 | 蓄电池回收,ups电池后备电源回收,铅酸蓄电池回收,机房电源回收-广州益夫铅酸电池回收公司 | 作文导航网_作文之家_满分作文_优秀作文_作文大全_作文素材_最新作文分享发布平台 | 电子万能试验机_液压拉力试验机_冲击疲劳试验机_材料试验机厂家-济南众标仪器设备有限公司 | 楼承板-开口楼承板-闭口楼承板-无锡海逵 | 雨燕360体育免费直播_雨燕360免费NBA直播_NBA篮球高清直播无插件-雨燕360体育直播 | 校服厂家,英伦校服定做工厂,园服生产定制厂商-东莞市艾咪天使校服 | 盐城网络公司_盐城网站优化_盐城网站建设_盐城市启晨网络科技有限公司 | 广州工业氧气-工业氩气-工业氮气-二氧化碳-广州市番禺区得力气体经营部 | 防爆电机-高压防爆电机-ybx4电动机厂家-河南省南洋防爆电机有限公司 | 空调风机,低噪声离心式通风机,不锈钢防爆风机,前倾皮带传动风机,后倾空调风机-山东捷风风机有限公司 | 复合土工膜厂家|hdpe防渗土工膜|复合防渗土工布|玻璃纤维|双向塑料土工格栅-安徽路建新材料有限公司 | 减速机电机一体机_带电机减速器一套_德国BOSERL电动机与减速箱生产厂家 | 成都离婚律师|成都结婚律师|成都离婚财产分割律师|成都律师-成都离婚律师网 | 济南货架定做_仓储货架生产厂_重型货架厂_仓库货架批发_济南启力仓储设备有限公司 | 【365公司转让网】公司求购|转让|资质买卖_股权转让交易平台 | 耐高温风管_耐高温软管_食品级软管_吸尘管_钢丝软管_卫生级软管_塑料波纹管-东莞市鑫翔宇软管有限公司 | 成都软件开发_OA|ERP|CRM|管理系统定制开发_成都码邻蜀科技 | 行业分析:提及郑州火车站附近真有 特殊按摩 ?2025实地踩坑指南 新手如何避坑不踩雷 | 展厅设计-展馆设计-专业企业展厅展馆设计公司-昆明华文创意 | 溶氧传感器-pH传感器|哈美顿(hamilton) | 全屋整木定制-橱柜,家具定制-四川峨眉山龙马木业有限公司 | 超声波焊接机,振动摩擦焊接机,激光塑料焊接机,超声波焊接模具工装-德召尼克(常州)焊接科技有限公司 | 环氧铁红防锈漆_环氧漆_无溶剂环氧涂料_环氧防腐漆-华川涂料 |