java - 在某些情况下,计数器为负值。为什么?以及如何解决这个问题?

标签 java concurrency

package threadapps;

public class Threads extends javax.realtime.RealtimeThread{

    /**
     * @param args the command line arguments
     */
    static volatile  boolean stop = false;
    public static void main(String[] args) throws InterruptedException {

        // TODO code application logic here
        //
        Thread a = new Threads();
        Thread b = new Threads();
        //set priority for threads
        a.setPriority(4);
        b.setPriority(6);
        //run threads
        a.start();
        b.start();
        //Sleep Thread
        Threads.sleep(5000);
        stop = true;
    }

    @Override
    public void run(){
        // for loop for counting to 10
        //for(int i = 0; i<10;i++){
        //    System.out.println( Thread.currentThread().getName()+" The Counter Is "+i);
        //}    
        int count = 0;
        for(;!stop;)
            count++;
        System.out.println(Thread.currentThread().getName()+" The Count is "+count);
    }
}

运行此代码并查看结果。在某些情况下它可以是负数吗?

最佳答案

如果计数达到 Integer.MAX_VALUE,那么在下一个增量时,它将是 Integer.MIN_VALUE。

关于java - 在某些情况下,计数器为负值。为什么?以及如何解决这个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20329782/

相关文章:

java - volatile 变量与实例变量的功能

java - 如何设置 Java DelayQueue 的容量

sql - 使用函数(而非触发器)中的旧值填充 Postgres 表

java - 关于如何优化这段代码有什么想法吗?我似乎想不出任何有效的办法

java - 有没有办法从 java 调用 imagej 宏(.ijm)(即将宏存储为字符串并使用 imagej 的 java 控件执行它)?

java - 清除全局 ArrayList 也会清除另一个

concurrency - OpenCL与Grand Central Dispatch中的并发编程

java - 使用 Struts 2 的 RESTful Web 服务

java - jetty HTTP2Client jar 丢失

Java 并发和多线程