相关疑难解决方法(0)

@GuardedBy,@ ThreadSafe,@ NotThreadSafe

我看到上面的注释在JCIP一书中被广泛使用.我认为这非常有用,因为即使没有适当的文档,它也会说明有关同步策略的一些信息.我也看到Intellij Idea使用这些注释它们现在实际上是Java语言本身的一部分吗?

java concurrency java.util.concurrent

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

用于在Java中查找Shared Mutable数据错误的工具

我有一个庞大的遗留系统来维护.代码库使用遍布各处的线程,这些线程共享大量可变数据.我知道,听起来很糟糕.无论如何,不​​回答"从头开始重写整个应用程序"或者我会投票给你:-)我试图在代码库上运行一些静态分析工具,但这些似乎都没有抓住这种情况发生了很多在我们的源代码中:多个线程正在读取和写入未标记为volatile或同步的变量.通常这发生在"runFlag"类型的变量上.这方面的一个例子是在Effective Java第2版第260页上:

public class StopThread
{
    private static boolean stopRequested;
    public static void main(String[] args) throws InterruptedException
    {
        Thread backgroundThread = new Thread(new Runnable()
        {
            public void run()
            {
                int i = 0;
                while (!stopRequested)
                {
                    i++;
                }
            }
        });
        backgroundThread.start();
        Thread.sleep(1000);
        stopRequested = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

此示例永远不会在Windows/Linux上完成,并为Sun JVM提供"-server"启动参数.那么,是否有任何(半)自动方式来查找这些问题,或者我是否必须完全依赖代码审查?

java multithreading static-analysis dynamic-analysis

14
推荐指数
2
解决办法
590
查看次数