小编HPC*_*PCS的帖子

如何打破双重检查锁定没有volatile

我知道基于这个链接http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html,没有volatile变量的双重检查锁定是不安全

class Foo { 
    private Helper helper = null;
    public Helper getHelper() {
        if (helper == null) {
            synchronized(this) {
                if (helper == null) {
                    helper = new Helper();
                }
            }
        }
        return helper;
    }
}
Run Code Online (Sandbox Code Playgroud)

我想在家用电脑上模拟这种情况.我有标准的jdk1.7和多核处理器.但我无法模拟破碎的行为.我正在使用这个测试http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckTest.java来模拟这个.我也创建了一些测试,但没有成功.你知道如何在没有volatile的双重检查成语被打破的情况下模拟情况吗?所以它返回部分创建的Helper类.

java multithreading locking

7
推荐指数
1
解决办法
282
查看次数

如何在WebSphere下停止应用程序的后台线程

我们正在WebSphere集群中部署应用程序.应用程序正在运行他自己的永不终止的线程,正在检查某些条件,例如:

while(true){
  logger.severe("Unterminated thread");
  Thread.sleep(10000);
}
Run Code Online (Sandbox Code Playgroud)

问题是,在WebSphere中停止应用程序(通过wsadmin或管理控制台)之后,只有servlet被取消注册,但这些线程不会被杀死并且仍然在运行.当我停止申请时,有什么方法可以杀死这个踏板吗?我们正在使用WebSphere 7.

谢谢

java websphere multithreading

3
推荐指数
1
解决办法
2885
查看次数

输出 JDK12 中带有 None vmop 操作的 Safepoint+stats 日志

我正在使用-Xlog:safepoint+stats=debug:file=safepoint.log vm 参数在JDK12上运行应用程序以记录安全点操作并使用 ZGC 运行。我有理解日志输出的问题:

[1408.417s][debug][safepoint,stats]           vmop                            [ threads:    total initially_running wait_to_block ][ time:    spin   block    sync cleanup    vmop ] page_trap_count
[1412.164s][debug][safepoint,stats] 1412.162: ZOperation                    [               376                 0             7 ][             0       0       0       0       1 ]               7
[1413.164s][debug][safepoint,stats] 1413.164: None                          [               376                 0             0 ][             0       0       0       0       0 ]               0
[1414.165s][debug][safepoint,stats] 1414.164: None                          [               376                 0             1 ][             0       0       0       0       0 ]               1
Run Code Online (Sandbox Code Playgroud)

我知道第一行告诉 ZOperation 花费了 1 毫秒,并且有 7 个线程参与了阻塞。

我不明白第二行,什么是“None” vmop 操作?看起来那个操作的持续时间是 …

java jvm zgc

2
推荐指数
1
解决办法
567
查看次数

标签 统计

java ×3

multithreading ×2

jvm ×1

locking ×1

websphere ×1

zgc ×1