Java
kingquake21
这个作者很懒,什么都没留下…
展开
-
DCL和happens-before的学习资料
DCL和happens-before的学习心得和资料原创 2011-01-12 09:15:00 · 363 阅读 · 0 评论 -
同步和内存可见性
synchronized 关键字的作用: 1. 作为线程间的互斥锁,防止多个线程同时访问由一个监视器保护的同步块 2. 保证内存的可见性。它可以确保,当离开同步块的时候将缓存数据刷新到内存中,当进入同步块的时候使本地缓存失效,从内存中获取最新数据。如果两个同步块被同一个监视器所保护,那么这两个同步块根据运行的时间有一个happen-before的关系,并且在后面执行的同步块中是可以看到前面那个同步块对内存的更新的。 3. 确保编译器不会将同步块中的指令移到同步块外面来(尽管在某些时候可以将同步块外面的原创 2011-01-24 14:22:00 · 467 阅读 · 0 评论 -
yield和sleep的区别
JDK1.5.0的API文档里的描述: yield:Causes the currently executing thread object to temporarily pause and allow other threads to execute. sleep:Causes the currently executing thread to sleep (temporarily cease execution) for the specified number of millisecond原创 2011-01-24 11:56:00 · 1896 阅读 · 0 评论 -
JSR133中volatile关键字的理解,有一个地方很迷惑
volatile的语义: 1. 确保对volatile域的读写操作都是直接在主存内进行,不缓存到线程的本地内存中。 2. 在旧的JMM中,volatile域的操作与nonvolatile域的操作之间可以重新排序。但是在JSR133以后,规定volatile操作和其他任何内存操作之间都不允许进行重新排序。 3. 在新的JMM下,当线程A写一个volatile变量V,然后线程B读取V的时侯,任何在写入V时对线程A可见的变量值,都对B可见 第3条很奇怪,感觉有点象synchronized的作用了。是不原创 2011-01-24 15:29:00 · 349 阅读 · 0 评论 -
ThreadPoolExecutor的线程池控制策略
If fewer than corePoolSize threads are running, the Executor always prefers adding a new thread rather than queuing. If corePoolSize or more threads are running, the Executor always prefers queuing a request rather than adding a new thread. If a reques原创 2011-03-18 14:13:00 · 732 阅读 · 0 评论 -
JAVA类装载的三个基本原则
<br />1. 委托原则:当加载一个类时,首先会委托父加载器来加载<br /><br />2. 可视化原则:子类加载器能看到父类加载器加载的所有类,但是反过来是不行的。同时,兄弟类加载器也看不到对方加载的类<br /><br />3. 唯一性原则:如果一个类加载器加载了某个类,那么它的子类加载器是不会再加载该类了的。<br /><br />Delegation Principle: If a class is not loaded already, the cla原创 2011-03-25 09:40:00 · 236 阅读 · 0 评论 -
Java中Abstract class与interface的差别
对于语法差别,很多文章都写了,就不再赘述了,这儿主要讲本质的差异抽象类定义了其子类的核心特征和功能(is a),例如继承Thread通常表明该类“is a”线程而接口只是定义了类的附加能力(-able/can-do),例如Runable表示可以单独运行的任务,但是并不是说该类is a线程;Comparable表示类具有比较的功能,但是并不是说该类"is a"比较器如果需要为子类添加或修改默认的行为,此时应该选择抽象类,而不是接口如果需要为不相干的类提供公共的功能,应该使用接口;如果建立的模型在层次上很接近,原创 2011-04-14 16:53:00 · 682 阅读 · 0 评论 -
WTP开发调试web应用时工作目录
<br />/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0<br />mark一下,使用eclipse内置的WTP开发调试web应用时,这个地址就是work directory,而不是在tomcat的安装目录下,也不是采用context文件的方式,而是全盘复制到上面的目录中原创 2011-04-20 16:09:00 · 344 阅读 · 0 评论