小编use*_*927的帖子

使用多个线程递增和递减单个共享变量

当递增和使用一个单一的共享变量递减多线程,我怎么能保证线程在syncronized方式计算,不跳过任何价值.

我创建了一个单独的类,其中有3个不同的方法,一个用于递增,另一个用于递减,最后一个用于返回值.它们都是同步的.

结果显示了一个例子:

  • 这是Thread_4迭代:-108 of 500
    这是Thread_5迭代:291 of 500
    这是Thread_4迭代:-109 of 500
    这是Thread_4迭代:-110 of 500

正如您所看到的那样,线程正在递减,但随后它会跳转到"291",这不应该发生,因为我使用的是共享变量.

*******************编辑********

代码: - 共享变量类

public class shareVar extends Thread
{
    private static int sharedVariable = 0;


    public synchronized static void increment(){
        sharedVariable++;
    }

    public synchronized static void decrement(){
        sharedVariable--;
    }

    public  static int value(){
        return sharedVariable;
    }
}
Run Code Online (Sandbox Code Playgroud)

-----递增类

sVar incrementVal = new sVar();

public synchronized void display(){

    for(int …
Run Code Online (Sandbox Code Playgroud)

java concurrency multithreading bluej

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

标签 统计

bluej ×1

concurrency ×1

java ×1

multithreading ×1