java multithreading synchronization thread-safety java-memory-model
Runnable是一个相当有限的抽象; run无法返回值或抛出已检查的异常.
run() 不能返回一个值,因为它的返回类型是void,但为什么不能抛出一个已检查的异常?
我从Effective Java中读到,在没有同步的情况下,下面的序列A可以被虚拟机转换为序列B并调用它hoisting.我还在某处读到,如果变量未被声明为涉及变量的易失性指令,则可以重新排序.吊装和重新订购同样的东西?
while (!done) sequence A
i++;
if (!done)
while (true) sequence B
i++;
Run Code Online (Sandbox Code Playgroud) 我在SO中发现了一篇文章,讨论了防止从实例方法写入静态字段所需的代码更改,但为什么这样做不是一个好习惯呢?为什么Java设计者会允许这样做呢?换句话说,为什么编译器在尝试执行此操作时不会抛出错误?
备受好评的书籍JCIP对ThreadLocal的使用说明了这一点:
通过将其线程限制属性视为使用全局变量的许可或作为创建"隐藏"方法参数的方法,很容易滥用ThreadLocal.线程局部变量可能会降低可重用性并在类之间引入隐藏的耦合,因此应谨慎使用.
说Thread-local变量可以减少可重用性并在类之间引入隐藏的耦合是什么意思?
java concurrency multithreading synchronization thread-local
我在我们的网络应用程序上运行Google的Page Speed来分析和优化我们的网站.
Page Speed中列出的Web性能最佳实践项目中的众多项目之一说:"为了充分利用所有浏览器中一致的缓存优势,我们建议您将Web服务器配置为显式设置缓存标头并将其应用于所有可缓存的静态资源,而不仅仅是一个小的子集(如图像).可缓存的资源包括JS和CSS文件,图像文件和其他二进制目标文件(媒体文件,PDF,Flash文件等).一般来说,HTML不是静态的,不应被视为可缓存."
如何配置tomcat实现相同?我知道它可以通过放置一些HTTP头来通过过滤器完成,但是我们可以在不通过配置触及代码的情况下完成吗?
编辑:仅供参考,我们使用JSF 1.2虽然我认为这与此问题的上下文无关.
我正在使用JSF并希望只有当关联的托管bean中的String值大于零时才应该呈现一个组件.我这样做:
rendered="#{tabbedToolbarBean.editor.selectedQuery.length() gt 0}"
Run Code Online (Sandbox Code Playgroud)
此外,吸气剂的签名selectedQuery是 public String getSelectedQuery(){}.我使用最新版本的weblogic服务器时出现以下错误.
错误:函数长度具有无效前缀或使用未定义的默认命名空间.更正前缀或在jsp文档中,将函数放在定义标记库名称空间的标记内
我错过了什么?谷歌搜索后得不到多少帮助.
根据Goetz在他的书JCIP中的说法:
因为每个线程都有自己的中断策略,所以除非知道中断对该线程的意义,否则不应该中断线程.
为什么Java语言提供了一种public interrupt ()方法?这是一个设计缺陷吗?谁或什么应该打断一个线程呢?
java ×7
jsf ×2
apache ×1
code-metrics ×1
concurrency ×1
el ×1
jsf-2 ×1
jsp ×1
pagespeed ×1
servlets ×1
sonarqube ×1
thread-local ×1
tomcat ×1