【问题标题】:java.lang.IllegalMonitorStateException: unlock of unowned monitor at java.util.Random.nextGaussian(Random.java:187)java.lang.IllegalMonitorStateException: 在 java.util.Random.nextGaussian(Random.java:187) 解锁无主监视器
【发布时间】:2012-03-10 08:17:06
【问题描述】:

在调用内置方法nextGaussian 时会抛出IllegalMonitorStateException:解锁未拥有的监视器

double dispersion = RAND.nextGaussian() * 0.2;

在里面

    @Override
        public void stroke(Canvas c, float x, float y) {
}

这里叫

case MotionEvent.ACTION_MOVE:
            style.stroke(mCanvas, x, y);
            break;
        }
        return true;
    }

然后在Surface.java

    @Override
        public boolean onTouchEvent(MotionEvent event) {
            switch (event.getAction()) {
            case MotionEvent.ACTION_UP:
                getHistory().saveState();
                break;
            }
            final float x = panHelper.translateX(event.getX());
            final float y = panHelper.translateY(event.getY());


                return controller.onTouch(event.getAction(), x, y);

        }

代码崩溃:

java.lang.IllegalMonitorStateException: unlock of unowned monitor .

撞!

【问题讨论】:

    标签: android forceclose


    【解决方案1】:

    我怀疑这是操作系统中的错误(我遇到了完全相同的错误)。您可以尝试使用自制的高斯随机数生成器。这是我在一些旧代码中找到的一个 - 抱歉,我不记得我是从哪里得到它的。

    Random rand;
    Boolean RG_y2_valid = false;
    Double RG_y1;
    Double RG_y2;
    
    double rand_gauss()
    {
        double x1, x2, w;
    
        if (RG_y2_valid)
        {
            RG_y2_valid = false;
            return RG_y2;
        }
    
        do
        {
            x1 = 2.0 * rand.nextDouble() - 1.0;
            x2 = 2.0 * rand.nextDouble() - 1.0;
            w = x1 * x1 + x2 * x2;
        } while ( w >= 1.0 );
    
        w = Math.sqrt( (-2.0 * Math.log( w ) ) / w );
        RG_y1 = x1 * w;
        RG_y2 = x2 * w;
    
        RG_y2_valid = true;
    
        return RG_y1;
    }
    

    【讨论】:

      猜你喜欢
      • 2010-12-05
      • 2011-12-01
      • 1970-01-01
      • 2018-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-24
      • 1970-01-01
      相关资源
      最近更新 更多