Core Java题目快速回答(摘)
Core Java题目快速回答(摘),判断题,每题限制10秒
类定义了其包含的数据和方法成员,所以,JVM中每个对象都将拥有一个独立的数据和方法成员内存区?
使用synchronized声明实例方法,则,并发调用该对象的这个方法是同步的?
使用synchronized声明实例方法,则,并发调用该类所有实例的这个方法是同步的?
因为sleep方法属于Thread类,所以可以调用某个线程的sleep方法,使它在某个时间点到达时暂停一段时间后再继续运行?
因为notify方法和wait方法和线程相关,所以他们在Thread类中定义?
要使当前线程等待某个某种事件,应该调用该线程的wait方法?
当某个期待的事件发生时,应该调用该事件的nofify或notifyAll方法通知正在等待的线程?
祝你回答顺利 42 楼 Godlikeme 2007-05-28 应该是类同的。
但是这样也不太准确,方法不会有多份,但每个对象会有一个方法表。 43 楼 ken1984 2007-05-28 Godlikeme 写道应该是类同的。
但是这样也不太准确,方法不会有多份,但每个对象会有一个方法表。
我的意思是,类的方法就一份,类只有一个,然而类的对象会有无数个。 44 楼 Qieqie 2007-05-28 Java的Class在虚拟机中只会保存一份对该类的方法定义,在该Class被load进来的时候完成这个工作。
该类的每一个对象,只是保持该对象的数据成员而已,不会每个对象都保存一份独立的方法定义副本。
调用该对象的方法时,只是在所执行的线程的方法调用栈中增加一个方法执行情况记录:记录该本次对被执行方法的局部变量的中间值等。
这也从本根上说明了,定义在方法内部的局部变量是多线程安全的(每个线程都保持一份不同的执行数据副本),
只要该方法只是使用局部变量,不会对全局变量进行“写”操作,或者使用的全局共享资源(如DataSource)是线程安全的,便可以称该方法是线程安全的,Spring的XxxxTemplate方法大部分属于此类型。
ps:现象解释:为什么过多的递归调用会outofmemoryerror
因为每个方法调用都是往调用栈增加一个元素,过多的调用,这个栈就会越来越大,超过java规定的长度就会抛出这个异常
以上只是常识,书本知识而已,掌握了没什么了不起~~~~~~没掌握似乎也没影响 45 楼 zhuyi8319 2007-05-28 还没有给题目答案呢, 46 楼 Qieqie 2007-05-28 zhuyi8319 写道还没有给题目答案呢,
题目答案、对错似乎不重要~~~~
有用到相关应用时,到时翻翻书自己搞明白就是了
要答案可以给我发站内消息要阿
你的回帖属于“灌水”,和我这个回帖一样,可能被投隐藏扣分 47 楼 ken1984 2007-05-28 Qieqie 写道
以上只是常识,书本知识而已,掌握了没什么了不起~~~~~~没掌握似乎也没影响
既然是这样也就不用拿来考核别人的能力了;
另外说一句关于底层的,大家还是往UNIX/LINUX方向走,绝对能满足你对底层的渴望。楼主说的,不懂JVM怎么能玩好JAVA?相反不懂TCP/IP协议以及整个网络模型各层的作用,怎么用好SOCKET?如果你懂IP如何分片,TCP分组如何重组,懂得知道什么是MTU,MSS,滑窗协议,阻塞窗口,那你就可以最大限度的利用网络资源,并且可以防止发送过量数据导致网络阻塞等等等等,这些系统都给你做好了,API都给你指好了路,你顺着用就行了,要想挖底层,我估计你最后会拿起物理媒体,电子信号,通信之类的书本。因为上层要把数据发给其他机器还得通过更底层的物理层,转化成电信号后通过物理媒体传输。 48 楼 solospider 2007-05-28 ken1984 写道Qieqie 写道
以上只是常识,书本知识而已,掌握了没什么了不起~~~~~~没掌握似乎也没影响
楼主说的,不懂JVM怎么能玩好JAVA?相反不懂TCP/IP协议以及整个网络模型各层的作用,怎么用好SOCKET?如果你懂IP如何分片,TCP分组如何重组,懂得知道什么是MTU,MSS,滑窗协议,阻塞窗口,那你就可以最大限度的利用网络资源,并且可以防止发送过量数据导致网络阻塞等等等等,这些系统都给你做好了,API都给你指好了路,你顺着用就行了,要想挖底层,我估计你最后会拿起物理媒体,电子信号,通信之类的书本。因为上层要把数据发给其他机器还得通过更底层的物理层,转化成电信号后通过物理媒体传输。
凡事都有个度,没必要这么偏颇。在一定限度内了解一些底层的知识不是什么坏事。
而且做java不一定都是开发j2ee, java的应用领域那么广泛, 所以需要有广泛的知识储备才行。
49 楼 Godlikeme 2007-05-28 Qieqie 写道Java的Class在虚拟机中只会保存一份对该类的方法定义,在该Class被load进来的时候完成这个工作。
该类的每一个对象,只是保持该对象的数据成员而已,不会每个对象都保存一份独立的方法定义副本。
调用该对象的方法时,只是在所执行的线程的方法调用栈中增加一个方法执行情况记录:记录该本次对被执行方法的局部变量的中间值等。
这也从本根上说明了,定义在方法内部的局部变量是多线程安全的(每个线程都保持一份不同的执行数据副本),
只要该方法只是使用局部变量,不会对全局变量进行“写”操作,或者使用的全局共享资源(如DataSource)是线程安全的,便可以称该方法是线程安全的,Spring的XxxxTemplate方法大部分属于此类型。
ps:现象解释:为什么过多的递归调用会outofmemoryerror
因为每个方法调用都是往调用栈增加一个元素,过多的调用,这个栈就会越来越大,超过java规定的长度就会抛出这个异常
以上只是常识,书本知识而已,掌握了没什么了不起~~~~~~没掌握似乎也没影响
能说道这个程度已经不容易了,估计没看过jvm深入浅出还是有点难度地,
基本上没什么问题吧。
但对于这个红字是有问题的,因为读也有 data race 的问题。 50 楼 Qieqie 2007-05-28 貌似我应该没直接说“不懂JVM怎么能玩好JAVA”,虽有嫌疑。反正这个论点可能有点武断,但是如果能搞懂JVM却有助从更根本的地方掌握JAVA语言,或者说玩好了,有时出现“怪异”的事情时,也能胸有成竹解决之。
(JVM本来就是JAVA的OS,想想OS的重要性就是了)。
(说JVM重要的人-包括现在的我-不代表他就能完全精通JVM。我绝对没有完全精通JVM,但一般的JVM/OS知识我有去了解,我能感觉到对我有用)
底层这个无底洞,不能说一概不知,但也适可而止,两个极端都不行。
51 楼 ken1984 2007-05-28 是的,JVM懂了确实对做JAVA有帮助,但不是每个人都应该懂,这也不是基本的吧。如果是,那大家的基础都不行了吗,怎么还能做出那么多东西呢? 52 楼 manmoon 2007-05-28 大家讨论挺激烈阿
呵呵
如果你想彻底了解JVM我觉得你还是拜读源代码吧。或者说你该把C搞好一些。
光靠看书本上怎么说就认为自己掌握了,尽信书不如无书啊。
你知道这些和不知道这些知识的人一样,因为大家所追求的不同。
对于老板,能带来效率就行
对于自己,能赚到钱就行。
个人愚见,我喜欢技术,但是我不崇拜技术。