相关疑难解决方法(0)

224
推荐指数
11
解决办法
9万
查看次数

Java 7:错误时触发IF条件

我有这段代码:

void timerCountDown(){
    while(RaftNode.getTimeoutVar()){
        long x = System.currentTimeMillis();
        if(x >= RaftNode.limit){
            System.out.println(x);
            System.out.println(RaftNode.limit + " THIS SHOULD BE LESS THAN");
            System.out.println(System.currentTimeMillis() + " THIS");
            System.out.println("TIMED OUT");
            raft.RaftNode.setTimeoutVar(false);
            nextRandomTimeOut();
            raft.RaftNode.onTimeOut();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

所以基本上,这是一个超时功能,超时由另一个条件刷新.我的问题是x> = RaftNode.limit条件保持触发,即使它是假的(通过print语句).

我的控制台输出:

1431532870542
1431532872508 THIS SHOULD BE LESS THAN
1431532870542 THIS
Run Code Online (Sandbox Code Playgroud)

因此x确实是当前时间,但即使它小于限制,也会触发条件.

我不知道为什么!

限制变量是

public static long limit;
Run Code Online (Sandbox Code Playgroud)

所以没什么好奇的

java if-statement java-7

5
推荐指数
1
解决办法
143
查看次数

竞争条件是否有更好的AtomicInteger比较功能?

我正在尝试将装饰器编写到现有的类中,如果没有足够的可用资源则拒绝该类.这是一个没有多线程的代码示例版本:

public interface Handler {
    boolean handleTask(Task myTask); // returns true if successful, false if failure
}

public interface Task {
    int getResources();
    // Among other things
}

public BlockingHandler implements Handler {
    private int occupied;
    private final int limit;

    private final Handler backingHandler;

    BlockingHandler(Handler backingHandler) {
        this.backingHandler = backingHandler;
    }

    @Override
    public boolean handleTask(Task myTask) {
        if(myTask.getResources() + occupied > limit) return false;
        occupied += myTask.getResources();
        return backingHandler.handleTask(myTask);
    }

    // Don't worry about this part, I'm not doing it …
Run Code Online (Sandbox Code Playgroud)

java multithreading synchronization race-condition

4
推荐指数
1
解决办法
2213
查看次数

java程序中的变量可用(单例)

我需要在运行时设置一个布尔变量,可以被任何其他类访问(无需将变量从类传递给类).此变量将是配置设置,并将取决于用户在运行时设置的某些值.

我怀疑单身是可行的方式,但是早上花了很多时间阅读它,我似乎找到了很多关于创建它们的最佳方法的例子(和参数),而没有提到如何实际使用它们.

单身是解决这个问题的方法吗?

如果是这样,任何人都可以提供一个单例的例子,它可以设置一个布尔值,可以从任何其他类静态访问吗?

编辑:我是一个白痴(完全过于复杂的问题,并错过了最简单的解决方案).

public static volatile boolean yourBoolean; 看起来它会完美运作

java

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