关于effective java并发这一章, 呼叫撒加大神

a596620989 2013-04-19
TGIF....各位大牛, 还有撒加大牛, 小弟在看effective java的时候遇到点问题:
public class StopThread {

    public static boolean stopRequested = false;
    
    public static void main(String args[]) throws InterruptedException{
	Thread backgroudThread = new Thread(new Runnable(){
	    public void run(){
		int i=0;
		while(!stopRequested){
		    i++;
		    System.out.println(i);
		}
	    }
	});
	
	backgroudThread.start();
	
	TimeUnit.SECONDS.sleep(1);
	stopRequested = true;
	
    }
}


关于这段代码, 书中说道由于没有同步, "hotspot server VM"虚拟机会将while循环这段代码优化为
if(!stopRequested){
	    while(true){
		i++;
	    }
	}

首先我查看了javap之后的字节码, 发现在编译后并没有产生任何优化
public void run();
  Code:
   0:   iconst_0
   1:   istore_1
   2:   goto    8
   5:   iinc    1, 1
   8:   getstatic       #17; //Field p230/StopThread.stopRequested:Z
   11:  ifeq    5
   14:  return

}


问题1:VM的优化应该是在运行期进行的, 如何查看被优化之后的代码呢?用什么工具?

问题2:这段代码在我的机子上并没如书中所说的会永久跑下去.而是1秒之后就结束了.是不是我没开什么参数?还是漏掉了什么?

我的java -version之后的结果如下:
java version "1.6.0_21"
Java(TM) SE Runtime Environment (build 1.6.0_21-b06)
Java HotSpot(TM) Client VM (build 17.0-b16, mixed mode, sharing)

问题3:我12年毕业的, 看过<java 编程思想>,<Effective java>,<深入理解java虚拟机>看了一半.现有的公司基本没用过线程,所以对线程不熟.另外有几次带小项目的经验.这样的水平可以在淘宝做开发不, 如果不行, 还需要哪些知识储备:如看哪些书.还有目前淘宝的招人形势如何.

嘿嘿, 一口气问了这么多问题, 有点小贪心哈, 感谢诸大神.
RednaxelaFX 2013-04-19
TGIF。楼主需要的是善用搜索引擎。HLLVM群组里我以前已经回复过一模一样的问题:http://hllvm.group.iteye.com/group/topic/34932

a596620989 写道
问题1:VM的优化应该是在运行期进行的, 如何查看被优化之后的代码呢?用什么工具?

请参考开头说的那帖。

a596620989 写道
问题2:这段代码在我的机子上并没如书中所说的会永久跑下去.而是1秒之后就结束了.是不是我没开什么参数?还是漏掉了什么?

我的java -version之后的结果如下:
java version "1.6.0_21"
Java(TM) SE Runtime Environment (build 1.6.0_21-b06)
Java HotSpot(TM) Client VM (build 17.0-b16, mixed mode, sharing)

a596620989 写道
关于这段代码, 书中说道由于没有同步, "hotspot server VM"虚拟机会将while循环这段代码优化为

请用java -server。只装JRE的话在32位Windows上的Oracle JRE没带HotSpot Server VM,请装JDK或者是在64位Windows上装64位Oracle JDK。Solaris/Linux/Mac OS X上的Oracle JDK都有HotSpot Server VM的。

a596620989 写道
问题3:我12年毕业的, 看过<java 编程思想>,<Effective java>,<深入理解java虚拟机>看了一半.现有的公司基本没用过线程,所以对线程不熟.另外有几次带小项目的经验.这样的水平可以在淘宝做开发不, 如果不行, 还需要哪些知识储备:如看哪些书.还有目前淘宝的招人形势如何.

看去什么组吧。每个组的要求不一样。也可以通过外包途径进来。而且能不能进也有很大运气成分,看遇到谁面试之类的。
我已经大半年不在淘宝了不太清楚那边现在的招聘情况如何…另外这个话题跟HLLVM没啥关系所以这帖就不继续了。
a596620989 2013-04-22
能被R大亲自回复, 诚惶诚恐.感谢R大经营了HLLVM这个好圈子.
RednaxelaFX 2013-04-22
a596620989 写道
能被R大亲自回复, 诚惶诚恐.感谢R大经营了HLLVM这个好圈子.

呵呵不用谢。HLLVM群组里大部分帖子都只有我回复其实很郁闷的啊…得像办法鼓励更多人来参与讨论才好
Global site tag (gtag.js) - Google Analytics