今天有个朋友问我,为什么一个new一个对象的指令在new后面紧跟的是dup操作?他说搜了可能找到的
搜索引擎都找不到答案,包括翻了>这本书也没有任何说明.阅读全文>
发表于 @ 2008年05月05日 14:59:00|评论(loading...)|编辑|收藏
对于集合类参数,如果传入方法后在方法外重新赋值参数本身,这和其它引用参数一样不会影响方法内的参数.但如果对集合中元素重新赋值则改变了方法内的集合中的元素,因为方法外和方法内的集合就是本身是同一对象.阅读全文>
发表于 @ 2007年09月17日 11:02:00|评论(loading...)|编辑|收藏
今天再次在卫琴的论坛上看到有人问这样的问题:
short tmp = 0;
为什么tmp = tmp +1;错误但 tmp ++;却正确.
用google和yahoo竟然搜索不到一个正确的答案.都说java程序员不需要关心底层,真的吗?
阅读全文>
发表于 @ 2007年03月23日 09:53:00|评论(loading...)|编辑|收藏
一.什么是线程池?线程池就是以一个或多个线程[循环执行]多个应用逻辑的线程集合.注意这里用了线程集合的概念是我生造的,目的是为了区分执行一批应用逻辑的多个线程和线程组的区别.关于线程组的概念请参阅基础部分.那么如果一个线程循环执行一段代码是否是线程池?如果极端而言,应该算,但实际上循环代码应该算上一个逻辑单元.我们说最最弱化的线程池应该是循环执行多个逻辑单元.也就是有一批要执行的任务,这些任务被独立为多个不同的执行单元.比如:阅读全文>
发表于 @ 2007年01月12日 14:52:00|评论(loading...)|编辑|收藏
final变量的定义本身并不复杂,就是变量一经初始化就不能再指向其它对象.在c++中它是一个const指针,而不是指向const变量的指针,const指针的意思是说它只能一直指向初始化时的那个地址.但那个地址中对象本身是可以修改的.而指向const变量的指针是说所指对象本身是不能修改的.阅读全文>
发表于 @ 2006年12月25日 17:41:00|评论(loading...)|编辑|收藏
1.多个线程共有的字段应该用synchronized或volatile来保护.
2.synchronized负责线程间的互斥.即同一时候只有一个线程可以执行synchronized中的代码.
3.volatile负责线程中的变量与主存储区同步.但不负责每个线程之间的同步.阅读全文>
发表于 @ 2006年08月19日 20:47:00|评论(loading...)|编辑|收藏
不要一看到双检锁就认为它有安全问题.有些时候它完全可以非常好地工作.只是你要理解它的安全
问题到底在哪儿?
阅读全文>
发表于 @ 2006年08月17日 16:10:00|评论(loading...)|编辑|收藏
一个线程对象,在开始运行的时候(JAVA
中从调用线程对象的start(),ZThread中构造函数完成后会直接启动),就将当前线程所要执行的任务
及相关上下文注册到线程处理系统内.线程对象只是向这个处理系统注册的句柄,注册后如何执行线程
对象要完成的操作那就由线程处理系统来统一管理了阅读全文>
发表于 @ 2006年08月15日 10:18:00|评论(loading...)|编辑|收藏
volatile 是用来保证[内存同步]的关键字,内存同步是说在某个线程中修改某实例字段能够及时地
更新到主存储区,而某线程如果需要引用该字段也能及时地从主存储区中得到最新的数据.阅读全文>
发表于 @ 2006年08月14日 14:34:00|评论(loading...)|编辑|收藏
Java是在语言级提供对线程的支持,所以Java的内存模型分为主存储器和工作存储器.
[Main memory]主存储器就是实例所在的存储区域,所有实例本身都被放在主存储器中,当然这
句话本身就说明了实例的字段也在主存储器中,主存储器被实例的所有线程所共有.
[working memory] 工作存储器当然就是每个线程所专有的工作区域,当然其中有它们共有的
主存储器中的一些必要的如实例字段等数据的COPY阅读全文>
发表于 @ 2006年03月13日 09:23:00|评论(loading...)|编辑|收藏