Java 多线程中的同步块

Java 多线程中的同步块,java,multithreading,Java,Multithreading,我有一个方法调用方法的2synchronize块,并提供了代码 private static int count1 = 0; private static int count2 = 0; public synchronized static void add() { count1++; System.out.println("T name: " + Thread.currentThread().getName() + "count1 = " +

我有一个方法调用方法的2
synchronize
块,并提供了代码

    private static int count1 = 0;
    private static int count2 = 0;

    public synchronized static void add() {
    count1++;
    System.out.println("T name: " + Thread.currentThread().getName()
    + "count1 = " + count1);
}

public synchronized static void addAgain() {
    count2++;
    System.out.println("T name: " + Thread.currentThread().getName()
            + "count1 = " + count2);
}

    public static void compute() {
        for(int i=0;i<100;++i) {
            add();
            addAgain();
        }
    }
根据提供的代码,我有三个问题:

  • 当一个线程调用
    compute
    方法时,它是否能够访问内部的两个
    synchronized
    方法并执行增量操作

  • 如果一个线程获得了对for循环的访问权,那么它是完成for循环还是在与另一个线程共享之前离开for循环

  • 如果是这样的话,我假设另一个线程处于等待阶段,没有做很多事情。这是正确的吗

  • 为了便于讨论,以下是我在跑步后得到的结果:

        Thread name: Thread-0  count1 value = 1
    Thread name: Thread-1  count1 value = 2
    Thread name: Thread-1 count2 value = 1
    Thread name: Thread-1  count1 value = 3
    Thread name: Thread-1 count2 value = 2
    Thread name: Thread-1  count1 value = 4
    Thread name: Thread-1 count2 value = 3
    Thread name: Thread-1  count1 value = 5
    Thread name: Thread-1 count2 value = 4
    Thread name: Thread-1  count1 value = 6
    Thread name: Thread-1 count2 value = 5
    Thread name: Thread-1  count1 value = 7
    Thread name: Thread-1 count2 value = 6
    Thread name: Thread-1  count1 value = 8
    Thread name: Thread-1 count2 value = 7
    Thread name: Thread-1  count1 value = 9
    Thread name: Thread-1 count2 value = 8
    Thread name: Thread-1  count1 value = 10
    Thread name: Thread-1 count2 value = 9
    Thread name: Thread-1  count1 value = 11
    Thread name: Thread-1 count2 value = 10
    Thread name: Thread-1  count1 value = 12
    Thread name: Thread-1 count2 value = 11
    Thread name: Thread-1  count1 value = 13
    Thread name: Thread-1 count2 value = 12
    Thread name: Thread-1  count1 value = 14
    Thread name: Thread-1 count2 value = 13
    Thread name: Thread-1  count1 value = 15
    Thread name: Thread-1 count2 value = 14
    Thread name: Thread-1  count1 value = 16
    Thread name: Thread-1 count2 value = 15
    Thread name: Thread-1  count1 value = 17
    Thread name: Thread-1 count2 value = 16
    Thread name: Thread-1  count1 value = 18
    Thread name: Thread-1 count2 value = 17
    Thread name: Thread-1  count1 value = 19
    Thread name: Thread-1 count2 value = 18
    Thread name: Thread-1  count1 value = 20
    Thread name: Thread-0 count2 value = 19
    Thread name: Thread-0  count1 value = 21
    Thread name: Thread-0 count2 value = 20
    Thread name: Thread-0  count1 value = 22
    Thread name: Thread-0 count2 value = 21
    Thread name: Thread-0  count1 value = 23
    Thread name: Thread-0 count2 value = 22
    Thread name: Thread-0  count1 value = 24
    Thread name: Thread-0 count2 value = 23
    Thread name: Thread-0  count1 value = 25
    Thread name: Thread-0 count2 value = 24
    Thread name: Thread-0  count1 value = 26
    Thread name: Thread-0 count2 value = 25
    Thread name: Thread-0  count1 value = 27
    Thread name: Thread-0 count2 value = 26
    Thread name: Thread-0  count1 value = 28
    Thread name: Thread-0 count2 value = 27
    Thread name: Thread-0  count1 value = 29
    Thread name: Thread-0 count2 value = 28
    Thread name: Thread-0  count1 value = 30
    Thread name: Thread-0 count2 value = 29
    Thread name: Thread-0  count1 value = 31
    Thread name: Thread-0 count2 value = 30
    Thread name: Thread-0  count1 value = 32
    Thread name: Thread-0 count2 value = 31
    Thread name: Thread-0  count1 value = 33
    Thread name: Thread-0 count2 value = 32
    Thread name: Thread-0  count1 value = 34
    Thread name: Thread-0 count2 value = 33
    Thread name: Thread-0  count1 value = 35
    Thread name: Thread-0 count2 value = 34
    Thread name: Thread-0  count1 value = 36
    Thread name: Thread-0 count2 value = 35
    Thread name: Thread-0  count1 value = 37
    Thread name: Thread-0 count2 value = 36
    Thread name: Thread-0  count1 value = 38
    Thread name: Thread-0 count2 value = 37
    Thread name: Thread-0  count1 value = 39
    Thread name: Thread-0 count2 value = 38
    Thread name: Thread-0  count1 value = 40
    Thread name: Thread-0 count2 value = 39
    Thread name: Thread-0  count1 value = 41
    Thread name: Thread-0 count2 value = 40
    Thread name: Thread-0  count1 value = 42
    Thread name: Thread-0 count2 value = 41
    Thread name: Thread-0  count1 value = 43
    Thread name: Thread-0 count2 value = 42
    Thread name: Thread-0  count1 value = 44
    Thread name: Thread-0 count2 value = 43
    Thread name: Thread-0  count1 value = 45
    Thread name: Thread-0 count2 value = 44
    Thread name: Thread-0  count1 value = 46
    Thread name: Thread-0 count2 value = 45
    Thread name: Thread-0  count1 value = 47
    Thread name: Thread-0 count2 value = 46
    Thread name: Thread-0  count1 value = 48
    Thread name: Thread-0 count2 value = 47
    Thread name: Thread-0  count1 value = 49
    Thread name: Thread-0 count2 value = 48
    Thread name: Thread-0  count1 value = 50
    Thread name: Thread-0 count2 value = 49
    Thread name: Thread-0  count1 value = 51
    Thread name: Thread-0 count2 value = 50
    Thread name: Thread-0  count1 value = 52
    Thread name: Thread-0 count2 value = 51
    Thread name: Thread-0  count1 value = 53
    Thread name: Thread-0 count2 value = 52
    Thread name: Thread-0  count1 value = 54
    Thread name: Thread-0 count2 value = 53
    Thread name: Thread-0  count1 value = 55
    Thread name: Thread-0 count2 value = 54
    Thread name: Thread-0  count1 value = 56
    Thread name: Thread-0 count2 value = 55
    Thread name: Thread-0  count1 value = 57
    Thread name: Thread-0 count2 value = 56
    Thread name: Thread-0  count1 value = 58
    Thread name: Thread-0 count2 value = 57
    Thread name: Thread-0  count1 value = 59
    Thread name: Thread-0 count2 value = 58
    Thread name: Thread-0  count1 value = 60
    Thread name: Thread-0 count2 value = 59
    Thread name: Thread-0  count1 value = 61
    Thread name: Thread-0 count2 value = 60
    Thread name: Thread-0  count1 value = 62
    Thread name: Thread-0 count2 value = 61
    Thread name: Thread-0  count1 value = 63
    Thread name: Thread-0 count2 value = 62
    Thread name: Thread-0  count1 value = 64
    Thread name: Thread-0 count2 value = 63
    Thread name: Thread-0  count1 value = 65
    Thread name: Thread-0 count2 value = 64
    Thread name: Thread-0  count1 value = 66
    Thread name: Thread-0 count2 value = 65
    Thread name: Thread-0  count1 value = 67
    Thread name: Thread-0 count2 value = 66
    Thread name: Thread-0  count1 value = 68
    Thread name: Thread-0 count2 value = 67
    Thread name: Thread-0  count1 value = 69
    Thread name: Thread-0 count2 value = 68
    Thread name: Thread-0  count1 value = 70
    Thread name: Thread-0 count2 value = 69
    Thread name: Thread-0  count1 value = 71
    Thread name: Thread-0 count2 value = 70
    Thread name: Thread-0  count1 value = 72
    Thread name: Thread-0 count2 value = 71
    Thread name: Thread-0  count1 value = 73
    Thread name: Thread-0 count2 value = 72
    Thread name: Thread-0  count1 value = 74
    Thread name: Thread-0 count2 value = 73
    Thread name: Thread-0  count1 value = 75
    Thread name: Thread-0 count2 value = 74
    Thread name: Thread-0  count1 value = 76
    Thread name: Thread-0 count2 value = 75
    Thread name: Thread-0  count1 value = 77
    Thread name: Thread-0 count2 value = 76
    Thread name: Thread-0  count1 value = 78
    Thread name: Thread-0 count2 value = 77
    Thread name: Thread-0  count1 value = 79
    Thread name: Thread-0 count2 value = 78
    Thread name: Thread-0  count1 value = 80
    Thread name: Thread-0 count2 value = 79
    Thread name: Thread-0  count1 value = 81
    Thread name: Thread-0 count2 value = 80
    Thread name: Thread-0  count1 value = 82
    Thread name: Thread-0 count2 value = 81
    Thread name: Thread-0  count1 value = 83
    Thread name: Thread-0 count2 value = 82
    Thread name: Thread-0  count1 value = 84
    Thread name: Thread-0 count2 value = 83
    Thread name: Thread-0  count1 value = 85
    Thread name: Thread-0 count2 value = 84
    Thread name: Thread-0  count1 value = 86
    Thread name: Thread-0 count2 value = 85
    Thread name: Thread-0  count1 value = 87
    Thread name: Thread-0 count2 value = 86
    Thread name: Thread-0  count1 value = 88
    Thread name: Thread-0 count2 value = 87
    Thread name: Thread-0  count1 value = 89
    Thread name: Thread-0 count2 value = 88
    Thread name: Thread-0  count1 value = 90
    Thread name: Thread-0 count2 value = 89
    Thread name: Thread-0  count1 value = 91
    Thread name: Thread-0 count2 value = 90
    Thread name: Thread-0  count1 value = 92
    Thread name: Thread-0 count2 value = 91
    Thread name: Thread-0  count1 value = 93
    Thread name: Thread-0 count2 value = 92
    Thread name: Thread-0  count1 value = 94
    Thread name: Thread-0 count2 value = 93
    Thread name: Thread-0  count1 value = 95
    Thread name: Thread-0 count2 value = 94
    Thread name: Thread-0  count1 value = 96
    Thread name: Thread-0 count2 value = 95
    Thread name: Thread-0  count1 value = 97
    Thread name: Thread-0 count2 value = 96
    Thread name: Thread-0  count1 value = 98
    Thread name: Thread-0 count2 value = 97
    Thread name: Thread-0  count1 value = 99
    Thread name: Thread-0 count2 value = 98
    Thread name: Thread-0  count1 value = 100
    Thread name: Thread-0 count2 value = 99
    Thread name: Thread-0  count1 value = 101
    Thread name: Thread-0 count2 value = 100
    Thread name: Thread-0  count1 value = 102
    Thread name: Thread-0 count2 value = 101
    Thread name: Thread-0  count1 value = 103
    Thread name: Thread-0 count2 value = 102
    Thread name: Thread-0  count1 value = 104
    Thread name: Thread-0 count2 value = 103
    Thread name: Thread-0  count1 value = 105
    Thread name: Thread-0 count2 value = 104
    Thread name: Thread-0  count1 value = 106
    Thread name: Thread-0 count2 value = 105
    Thread name: Thread-0  count1 value = 107
    Thread name: Thread-0 count2 value = 106
    Thread name: Thread-0  count1 value = 108
    Thread name: Thread-0 count2 value = 107
    Thread name: Thread-0  count1 value = 109
    Thread name: Thread-0 count2 value = 108
    Thread name: Thread-0  count1 value = 110
    Thread name: Thread-0 count2 value = 109
    Thread name: Thread-0  count1 value = 111
    Thread name: Thread-0 count2 value = 110
    Thread name: Thread-0  count1 value = 112
    Thread name: Thread-0 count2 value = 111
    Thread name: Thread-0  count1 value = 113
    Thread name: Thread-0 count2 value = 112
    Thread name: Thread-0  count1 value = 114
    Thread name: Thread-0 count2 value = 113
    Thread name: Thread-0  count1 value = 115
    Thread name: Thread-0 count2 value = 114
    Thread name: Thread-0  count1 value = 116
    Thread name: Thread-0 count2 value = 115
    Thread name: Thread-0  count1 value = 117
    Thread name: Thread-0 count2 value = 116
    Thread name: Thread-0  count1 value = 118
    Thread name: Thread-0 count2 value = 117
    Thread name: Thread-0  count1 value = 119
    Thread name: Thread-0 count2 value = 118
    Thread name: Thread-1 count2 value = 119
    Thread name: Thread-1  count1 value = 120
    Thread name: Thread-1 count2 value = 120
    Thread name: Thread-1  count1 value = 121
    Thread name: Thread-1 count2 value = 121
    Thread name: Thread-1  count1 value = 122
    Thread name: Thread-1 count2 value = 122
    Thread name: Thread-1  count1 value = 123
    Thread name: Thread-1 count2 value = 123
    Thread name: Thread-1  count1 value = 124
    Thread name: Thread-1 count2 value = 124
    Thread name: Thread-1  count1 value = 125
    Thread name: Thread-1 count2 value = 125
    Thread name: Thread-1  count1 value = 126
    Thread name: Thread-1 count2 value = 126
    Thread name: Thread-1  count1 value = 127
    Thread name: Thread-1 count2 value = 127
    Thread name: Thread-1  count1 value = 128
    Thread name: Thread-1 count2 value = 128
    Thread name: Thread-1  count1 value = 129
    Thread name: Thread-1 count2 value = 129
    Thread name: Thread-1  count1 value = 130
    Thread name: Thread-1 count2 value = 130
    Thread name: Thread-1  count1 value = 131
    Thread name: Thread-1 count2 value = 131
    Thread name: Thread-1  count1 value = 132
    Thread name: Thread-1 count2 value = 132
    Thread name: Thread-1  count1 value = 133
    Thread name: Thread-1 count2 value = 133
    Thread name: Thread-1  count1 value = 134
    Thread name: Thread-1 count2 value = 134
    Thread name: Thread-1  count1 value = 135
    Thread name: Thread-1 count2 value = 135
    Thread name: Thread-1  count1 value = 136
    Thread name: Thread-1 count2 value = 136
    Thread name: Thread-1  count1 value = 137
    Thread name: Thread-1 count2 value = 137
    Thread name: Thread-1  count1 value = 138
    Thread name: Thread-1 count2 value = 138
    Thread name: Thread-1  count1 value = 139
    Thread name: Thread-1 count2 value = 139
    Thread name: Thread-1  count1 value = 140
    Thread name: Thread-1 count2 value = 140
    Thread name: Thread-1  count1 value = 141
    Thread name: Thread-1 count2 value = 141
    Thread name: Thread-1  count1 value = 142
    Thread name: Thread-1 count2 value = 142
    Thread name: Thread-1  count1 value = 143
    Thread name: Thread-1 count2 value = 143
    Thread name: Thread-1  count1 value = 144
    Thread name: Thread-1 count2 value = 144
    Thread name: Thread-1  count1 value = 145
    Thread name: Thread-1 count2 value = 145
    Thread name: Thread-1  count1 value = 146
    Thread name: Thread-1 count2 value = 146
    Thread name: Thread-1  count1 value = 147
    Thread name: Thread-1 count2 value = 147
    Thread name: Thread-1  count1 value = 148
    Thread name: Thread-1 count2 value = 148
    Thread name: Thread-1  count1 value = 149
    Thread name: Thread-1 count2 value = 149
    Thread name: Thread-1  count1 value = 150
    Thread name: Thread-1 count2 value = 150
    Thread name: Thread-1  count1 value = 151
    Thread name: Thread-1 count2 value = 151
    Thread name: Thread-1  count1 value = 152
    Thread name: Thread-1 count2 value = 152
    Thread name: Thread-1  count1 value = 153
    Thread name: Thread-1 count2 value = 153
    Thread name: Thread-1  count1 value = 154
    Thread name: Thread-1 count2 value = 154
    Thread name: Thread-1  count1 value = 155
    Thread name: Thread-1 count2 value = 155
    Thread name: Thread-1  count1 value = 156
    Thread name: Thread-1 count2 value = 156
    Thread name: Thread-1  count1 value = 157
    Thread name: Thread-1 count2 value = 157
    Thread name: Thread-1  count1 value = 158
    Thread name: Thread-1 count2 value = 158
    Thread name: Thread-1  count1 value = 159
    Thread name: Thread-1 count2 value = 159
    Thread name: Thread-1  count1 value = 160
    Thread name: Thread-1 count2 value = 160
    Thread name: Thread-1  count1 value = 161
    Thread name: Thread-1 count2 value = 161
    Thread name: Thread-1  count1 value = 162
    Thread name: Thread-1 count2 value = 162
    Thread name: Thread-1  count1 value = 163
    Thread name: Thread-1 count2 value = 163
    Thread name: Thread-1  count1 value = 164
    Thread name: Thread-1 count2 value = 164
    Thread name: Thread-1  count1 value = 165
    Thread name: Thread-1 count2 value = 165
    Thread name: Thread-1  count1 value = 166
    Thread name: Thread-1 count2 value = 166
    Thread name: Thread-1  count1 value = 167
    Thread name: Thread-1 count2 value = 167
    Thread name: Thread-1  count1 value = 168
    Thread name: Thread-1 count2 value = 168
    Thread name: Thread-1  count1 value = 169
    Thread name: Thread-1 count2 value = 169
    Thread name: Thread-1  count1 value = 170
    Thread name: Thread-1 count2 value = 170
    Thread name: Thread-1  count1 value = 171
    Thread name: Thread-1 count2 value = 171
    Thread name: Thread-1  count1 value = 172
    Thread name: Thread-1 count2 value = 172
    Thread name: Thread-1  count1 value = 173
    Thread name: Thread-1 count2 value = 173
    Thread name: Thread-1  count1 value = 174
    Thread name: Thread-1 count2 value = 174
    Thread name: Thread-1  count1 value = 175
    Thread name: Thread-1 count2 value = 175
    Thread name: Thread-1  count1 value = 176
    Thread name: Thread-1 count2 value = 176
    Thread name: Thread-1  count1 value = 177
    Thread name: Thread-1 count2 value = 177
    Thread name: Thread-1  count1 value = 178
    Thread name: Thread-1 count2 value = 178
    Thread name: Thread-1  count1 value = 179
    Thread name: Thread-1 count2 value = 179
    Thread name: Thread-1  count1 value = 180
    Thread name: Thread-1 count2 value = 180
    Thread name: Thread-1  count1 value = 181
    Thread name: Thread-1 count2 value = 181
    Thread name: Thread-1  count1 value = 182
    Thread name: Thread-1 count2 value = 182
    Thread name: Thread-1  count1 value = 183
    Thread name: Thread-1 count2 value = 183
    Thread name: Thread-1  count1 value = 184
    Thread name: Thread-1 count2 value = 184
    Thread name: Thread-1  count1 value = 185
    Thread name: Thread-1 count2 value = 185
    Thread name: Thread-1  count1 value = 186
    Thread name: Thread-1 count2 value = 186
    Thread name: Thread-1  count1 value = 187
    Thread name: Thread-1 count2 value = 187
    Thread name: Thread-1  count1 value = 188
    Thread name: Thread-1 count2 value = 188
    Thread name: Thread-1  count1 value = 189
    Thread name: Thread-1 count2 value = 189
    Thread name: Thread-1  count1 value = 190
    Thread name: Thread-1 count2 value = 190
    Thread name: Thread-1  count1 value = 191
    Thread name: Thread-1 count2 value = 191
    Thread name: Thread-1  count1 value = 192
    Thread name: Thread-1 count2 value = 192
    Thread name: Thread-1  count1 value = 193
    Thread name: Thread-1 count2 value = 193
    Thread name: Thread-1  count1 value = 194
    Thread name: Thread-1 count2 value = 194
    Thread name: Thread-1  count1 value = 195
    Thread name: Thread-1 count2 value = 195
    Thread name: Thread-1  count1 value = 196
    Thread name: Thread-1 count2 value = 196
    Thread name: Thread-1  count1 value = 197
    Thread name: Thread-1 count2 value = 197
    Thread name: Thread-1  count1 value = 198
    Thread name: Thread-1 count2 value = 198
    Thread name: Thread-1  count1 value = 199
    Thread name: Thread-1 count2 value = 199
    Thread name: Thread-1  count1 value = 200
    Thread name: Thread-1 count2 value = 200
    Count1=200  Count2=200
    

    因此,当一个线程确实获得了访问权限时,它会同时持有
    同步的
    方法。当控制器从一个色拉切换到另一个色拉时,计数器值将被更新并重新记忆

    将发生的情况是,两个线程都调用
    compute()
    方法,进入for循环,并在第一次调用
    add()
    时结束

    其中一个在另一个之前,因此他将进入
    synchronized
    方法。当他在方法中时,第二个线程可能会到达
    add()
    调用。这是一个可能的问题,因为你不能说哪个线程在什么时间点在哪里。它是未定义的,JVM决定哪些线程可以在什么时间执行操作。但是我们假设第二个线程到达
    add()
    调用,现在想要执行该方法。它不能这样做,因为它是同步的,并且另一个线程当前已经在调用它。因此线程进入等待状态。第一个线程完成了对
    add()
    的调用。现在,第二个线程可能会输入
    add()
    ,执行调用,退出
    add()
    ,然后输入
    addreach()
    。这将使第一个线程等待

    这听起来可能令人困惑,而这正是我想要了解的:

    你不能说哪个线程在什么时候调用什么方法。JVM可能会决定让第一个线程先执行这两个方法的100次调用,然后第二个线程再执行相同的调用。它可能决定他们称之为交替。现实可能介于两者之间。在另一个线程完成初始化之前,这两个线程中的一个甚至可能没有进入
    compute()
    方法。你不知道。这一切都取决于您的系统、处理器数量、发生的代码和cpu优化、使用哪个算法调度器等等

    一旦你做了多线程处理,当发生什么事情时,你就无能为力了。通过调用
    join
    可以等待任务完成。但是有一种确定的方法可以保证在1ms、2ms或250ms内都会出现这种情况


    所以你的问题是:

  • 当一个线程调用compute方法时,它是否能够访问内部的两个同步方法并执行增量 手术
  • 不,没有。通过调用
    add
    它可以访问此方法。它不会自动访问第二种方法

  • 如果一个线程获得了对for循环的访问权,那么它是完成for循环还是在与另一个线程共享之前离开for循环
  • 你不能说。既不能保证完成循环,也不能保证在完成之前中断

  • 如果是这样的话,我假设另一个线程处于等待阶段,没有做很多事情。这是正确的吗

  • 如果一个线程试图访问一个已被另一个线程访问的
    synchronized
    方法,那么它将处于等待状态。

    将发生的情况是,两个线程都调用
    compute()
    方法,进入for循环,并在第一次调用
    add()
    时结束

    其中一个在另一个之前,因此他将进入
    synchronized
    方法。当他在方法中时,第二个线程可能会到达
    add()
    调用。这是一个可能的问题,因为你不能说哪个线程在什么时间点在哪里。它是未定义的,JVM决定哪些线程可以在什么时间执行操作。但是我们假设第二个线程到达
    add()
    调用,现在想要执行该方法。它不能这样做,因为它是同步的,并且另一个线程当前已经在调用它。因此线程进入等待状态。第一个线程完成了对
    add()
    的调用。现在,第二个线程可能会输入
    add()
    ,执行调用,退出
    add()
    ,然后输入
    addreach()
    。这将使第一个线程等待

    这听起来可能令人困惑,而这正是我想要了解的:

    你不能说哪个线程在什么时候调用什么方法。JVM可能会决定让第一个线程先执行这两个方法的100次调用,然后第二个线程再执行相同的调用。它可能决定他们称之为交替。现实可能介于两者之间。在另一个线程完成初始化之前,这两个线程中的一个甚至可能没有进入
    compute()
    方法。你不知道。这一切都取决于您的系统、处理器数量、发生的代码和cpu优化、使用哪个算法调度器等等

    一旦你做了多线程处理,当发生什么事情时,你就无能为力了。通过调用
    join
    可以等待任务完成。但是有一种确定的方法可以保证在1ms、2ms或250ms内都会出现这种情况


    所以你的问题是:

  • 当一个线程调用compute方法时,它是否能够访问内部的两个同步方法并执行增量 手术
  • 不,没有。通过调用
    add
    它可以访问此方法。它不会自动访问第二种方法

  • 如果一根线
        Thread name: Thread-0  count1 value = 1
    Thread name: Thread-1  count1 value = 2
    Thread name: Thread-1 count2 value = 1
    Thread name: Thread-1  count1 value = 3
    Thread name: Thread-1 count2 value = 2
    Thread name: Thread-1  count1 value = 4
    Thread name: Thread-1 count2 value = 3
    Thread name: Thread-1  count1 value = 5
    Thread name: Thread-1 count2 value = 4
    Thread name: Thread-1  count1 value = 6
    Thread name: Thread-1 count2 value = 5
    Thread name: Thread-1  count1 value = 7
    Thread name: Thread-1 count2 value = 6
    Thread name: Thread-1  count1 value = 8
    Thread name: Thread-1 count2 value = 7
    Thread name: Thread-1  count1 value = 9
    Thread name: Thread-1 count2 value = 8
    Thread name: Thread-1  count1 value = 10
    Thread name: Thread-1 count2 value = 9
    Thread name: Thread-1  count1 value = 11
    Thread name: Thread-1 count2 value = 10
    Thread name: Thread-1  count1 value = 12
    Thread name: Thread-1 count2 value = 11
    Thread name: Thread-1  count1 value = 13
    Thread name: Thread-1 count2 value = 12
    Thread name: Thread-1  count1 value = 14
    Thread name: Thread-1 count2 value = 13
    Thread name: Thread-1  count1 value = 15
    Thread name: Thread-1 count2 value = 14
    Thread name: Thread-1  count1 value = 16
    Thread name: Thread-1 count2 value = 15
    Thread name: Thread-1  count1 value = 17
    Thread name: Thread-1 count2 value = 16
    Thread name: Thread-1  count1 value = 18
    Thread name: Thread-1 count2 value = 17
    Thread name: Thread-1  count1 value = 19
    Thread name: Thread-1 count2 value = 18
    Thread name: Thread-1  count1 value = 20
    Thread name: Thread-0 count2 value = 19
    Thread name: Thread-0  count1 value = 21
    Thread name: Thread-0 count2 value = 20
    Thread name: Thread-0  count1 value = 22
    Thread name: Thread-0 count2 value = 21
    Thread name: Thread-0  count1 value = 23
    Thread name: Thread-0 count2 value = 22
    Thread name: Thread-0  count1 value = 24
    Thread name: Thread-0 count2 value = 23
    Thread name: Thread-0  count1 value = 25
    Thread name: Thread-0 count2 value = 24
    Thread name: Thread-0  count1 value = 26
    Thread name: Thread-0 count2 value = 25
    Thread name: Thread-0  count1 value = 27
    Thread name: Thread-0 count2 value = 26
    Thread name: Thread-0  count1 value = 28
    Thread name: Thread-0 count2 value = 27
    Thread name: Thread-0  count1 value = 29
    Thread name: Thread-0 count2 value = 28
    Thread name: Thread-0  count1 value = 30
    Thread name: Thread-0 count2 value = 29
    Thread name: Thread-0  count1 value = 31
    Thread name: Thread-0 count2 value = 30
    Thread name: Thread-0  count1 value = 32
    Thread name: Thread-0 count2 value = 31
    Thread name: Thread-0  count1 value = 33
    Thread name: Thread-0 count2 value = 32
    Thread name: Thread-0  count1 value = 34
    Thread name: Thread-0 count2 value = 33
    Thread name: Thread-0  count1 value = 35
    Thread name: Thread-0 count2 value = 34
    Thread name: Thread-0  count1 value = 36
    Thread name: Thread-0 count2 value = 35
    Thread name: Thread-0  count1 value = 37
    Thread name: Thread-0 count2 value = 36
    Thread name: Thread-0  count1 value = 38
    Thread name: Thread-0 count2 value = 37
    Thread name: Thread-0  count1 value = 39
    Thread name: Thread-0 count2 value = 38
    Thread name: Thread-0  count1 value = 40
    Thread name: Thread-0 count2 value = 39
    Thread name: Thread-0  count1 value = 41
    Thread name: Thread-0 count2 value = 40
    Thread name: Thread-0  count1 value = 42
    Thread name: Thread-0 count2 value = 41
    Thread name: Thread-0  count1 value = 43
    Thread name: Thread-0 count2 value = 42
    Thread name: Thread-0  count1 value = 44
    Thread name: Thread-0 count2 value = 43
    Thread name: Thread-0  count1 value = 45
    Thread name: Thread-0 count2 value = 44
    Thread name: Thread-0  count1 value = 46
    Thread name: Thread-0 count2 value = 45
    Thread name: Thread-0  count1 value = 47
    Thread name: Thread-0 count2 value = 46
    Thread name: Thread-0  count1 value = 48
    Thread name: Thread-0 count2 value = 47
    Thread name: Thread-0  count1 value = 49
    Thread name: Thread-0 count2 value = 48
    Thread name: Thread-0  count1 value = 50
    Thread name: Thread-0 count2 value = 49
    Thread name: Thread-0  count1 value = 51
    Thread name: Thread-0 count2 value = 50
    Thread name: Thread-0  count1 value = 52
    Thread name: Thread-0 count2 value = 51
    Thread name: Thread-0  count1 value = 53
    Thread name: Thread-0 count2 value = 52
    Thread name: Thread-0  count1 value = 54
    Thread name: Thread-0 count2 value = 53
    Thread name: Thread-0  count1 value = 55
    Thread name: Thread-0 count2 value = 54
    Thread name: Thread-0  count1 value = 56
    Thread name: Thread-0 count2 value = 55
    Thread name: Thread-0  count1 value = 57
    Thread name: Thread-0 count2 value = 56
    Thread name: Thread-0  count1 value = 58
    Thread name: Thread-0 count2 value = 57
    Thread name: Thread-0  count1 value = 59
    Thread name: Thread-0 count2 value = 58
    Thread name: Thread-0  count1 value = 60
    Thread name: Thread-0 count2 value = 59
    Thread name: Thread-0  count1 value = 61
    Thread name: Thread-0 count2 value = 60
    Thread name: Thread-0  count1 value = 62
    Thread name: Thread-0 count2 value = 61
    Thread name: Thread-0  count1 value = 63
    Thread name: Thread-0 count2 value = 62
    Thread name: Thread-0  count1 value = 64
    Thread name: Thread-0 count2 value = 63
    Thread name: Thread-0  count1 value = 65
    Thread name: Thread-0 count2 value = 64
    Thread name: Thread-0  count1 value = 66
    Thread name: Thread-0 count2 value = 65
    Thread name: Thread-0  count1 value = 67
    Thread name: Thread-0 count2 value = 66
    Thread name: Thread-0  count1 value = 68
    Thread name: Thread-0 count2 value = 67
    Thread name: Thread-0  count1 value = 69
    Thread name: Thread-0 count2 value = 68
    Thread name: Thread-0  count1 value = 70
    Thread name: Thread-0 count2 value = 69
    Thread name: Thread-0  count1 value = 71
    Thread name: Thread-0 count2 value = 70
    Thread name: Thread-0  count1 value = 72
    Thread name: Thread-0 count2 value = 71
    Thread name: Thread-0  count1 value = 73
    Thread name: Thread-0 count2 value = 72
    Thread name: Thread-0  count1 value = 74
    Thread name: Thread-0 count2 value = 73
    Thread name: Thread-0  count1 value = 75
    Thread name: Thread-0 count2 value = 74
    Thread name: Thread-0  count1 value = 76
    Thread name: Thread-0 count2 value = 75
    Thread name: Thread-0  count1 value = 77
    Thread name: Thread-0 count2 value = 76
    Thread name: Thread-0  count1 value = 78
    Thread name: Thread-0 count2 value = 77
    Thread name: Thread-0  count1 value = 79
    Thread name: Thread-0 count2 value = 78
    Thread name: Thread-0  count1 value = 80
    Thread name: Thread-0 count2 value = 79
    Thread name: Thread-0  count1 value = 81
    Thread name: Thread-0 count2 value = 80
    Thread name: Thread-0  count1 value = 82
    Thread name: Thread-0 count2 value = 81
    Thread name: Thread-0  count1 value = 83
    Thread name: Thread-0 count2 value = 82
    Thread name: Thread-0  count1 value = 84
    Thread name: Thread-0 count2 value = 83
    Thread name: Thread-0  count1 value = 85
    Thread name: Thread-0 count2 value = 84
    Thread name: Thread-0  count1 value = 86
    Thread name: Thread-0 count2 value = 85
    Thread name: Thread-0  count1 value = 87
    Thread name: Thread-0 count2 value = 86
    Thread name: Thread-0  count1 value = 88
    Thread name: Thread-0 count2 value = 87
    Thread name: Thread-0  count1 value = 89
    Thread name: Thread-0 count2 value = 88
    Thread name: Thread-0  count1 value = 90
    Thread name: Thread-0 count2 value = 89
    Thread name: Thread-0  count1 value = 91
    Thread name: Thread-0 count2 value = 90
    Thread name: Thread-0  count1 value = 92
    Thread name: Thread-0 count2 value = 91
    Thread name: Thread-0  count1 value = 93
    Thread name: Thread-0 count2 value = 92
    Thread name: Thread-0  count1 value = 94
    Thread name: Thread-0 count2 value = 93
    Thread name: Thread-0  count1 value = 95
    Thread name: Thread-0 count2 value = 94
    Thread name: Thread-0  count1 value = 96
    Thread name: Thread-0 count2 value = 95
    Thread name: Thread-0  count1 value = 97
    Thread name: Thread-0 count2 value = 96
    Thread name: Thread-0  count1 value = 98
    Thread name: Thread-0 count2 value = 97
    Thread name: Thread-0  count1 value = 99
    Thread name: Thread-0 count2 value = 98
    Thread name: Thread-0  count1 value = 100
    Thread name: Thread-0 count2 value = 99
    Thread name: Thread-0  count1 value = 101
    Thread name: Thread-0 count2 value = 100
    Thread name: Thread-0  count1 value = 102
    Thread name: Thread-0 count2 value = 101
    Thread name: Thread-0  count1 value = 103
    Thread name: Thread-0 count2 value = 102
    Thread name: Thread-0  count1 value = 104
    Thread name: Thread-0 count2 value = 103
    Thread name: Thread-0  count1 value = 105
    Thread name: Thread-0 count2 value = 104
    Thread name: Thread-0  count1 value = 106
    Thread name: Thread-0 count2 value = 105
    Thread name: Thread-0  count1 value = 107
    Thread name: Thread-0 count2 value = 106
    Thread name: Thread-0  count1 value = 108
    Thread name: Thread-0 count2 value = 107
    Thread name: Thread-0  count1 value = 109
    Thread name: Thread-0 count2 value = 108
    Thread name: Thread-0  count1 value = 110
    Thread name: Thread-0 count2 value = 109
    Thread name: Thread-0  count1 value = 111
    Thread name: Thread-0 count2 value = 110
    Thread name: Thread-0  count1 value = 112
    Thread name: Thread-0 count2 value = 111
    Thread name: Thread-0  count1 value = 113
    Thread name: Thread-0 count2 value = 112
    Thread name: Thread-0  count1 value = 114
    Thread name: Thread-0 count2 value = 113
    Thread name: Thread-0  count1 value = 115
    Thread name: Thread-0 count2 value = 114
    Thread name: Thread-0  count1 value = 116
    Thread name: Thread-0 count2 value = 115
    Thread name: Thread-0  count1 value = 117
    Thread name: Thread-0 count2 value = 116
    Thread name: Thread-0  count1 value = 118
    Thread name: Thread-0 count2 value = 117
    Thread name: Thread-0  count1 value = 119
    Thread name: Thread-0 count2 value = 118
    Thread name: Thread-1 count2 value = 119
    Thread name: Thread-1  count1 value = 120
    Thread name: Thread-1 count2 value = 120
    Thread name: Thread-1  count1 value = 121
    Thread name: Thread-1 count2 value = 121
    Thread name: Thread-1  count1 value = 122
    Thread name: Thread-1 count2 value = 122
    Thread name: Thread-1  count1 value = 123
    Thread name: Thread-1 count2 value = 123
    Thread name: Thread-1  count1 value = 124
    Thread name: Thread-1 count2 value = 124
    Thread name: Thread-1  count1 value = 125
    Thread name: Thread-1 count2 value = 125
    Thread name: Thread-1  count1 value = 126
    Thread name: Thread-1 count2 value = 126
    Thread name: Thread-1  count1 value = 127
    Thread name: Thread-1 count2 value = 127
    Thread name: Thread-1  count1 value = 128
    Thread name: Thread-1 count2 value = 128
    Thread name: Thread-1  count1 value = 129
    Thread name: Thread-1 count2 value = 129
    Thread name: Thread-1  count1 value = 130
    Thread name: Thread-1 count2 value = 130
    Thread name: Thread-1  count1 value = 131
    Thread name: Thread-1 count2 value = 131
    Thread name: Thread-1  count1 value = 132
    Thread name: Thread-1 count2 value = 132
    Thread name: Thread-1  count1 value = 133
    Thread name: Thread-1 count2 value = 133
    Thread name: Thread-1  count1 value = 134
    Thread name: Thread-1 count2 value = 134
    Thread name: Thread-1  count1 value = 135
    Thread name: Thread-1 count2 value = 135
    Thread name: Thread-1  count1 value = 136
    Thread name: Thread-1 count2 value = 136
    Thread name: Thread-1  count1 value = 137
    Thread name: Thread-1 count2 value = 137
    Thread name: Thread-1  count1 value = 138
    Thread name: Thread-1 count2 value = 138
    Thread name: Thread-1  count1 value = 139
    Thread name: Thread-1 count2 value = 139
    Thread name: Thread-1  count1 value = 140
    Thread name: Thread-1 count2 value = 140
    Thread name: Thread-1  count1 value = 141
    Thread name: Thread-1 count2 value = 141
    Thread name: Thread-1  count1 value = 142
    Thread name: Thread-1 count2 value = 142
    Thread name: Thread-1  count1 value = 143
    Thread name: Thread-1 count2 value = 143
    Thread name: Thread-1  count1 value = 144
    Thread name: Thread-1 count2 value = 144
    Thread name: Thread-1  count1 value = 145
    Thread name: Thread-1 count2 value = 145
    Thread name: Thread-1  count1 value = 146
    Thread name: Thread-1 count2 value = 146
    Thread name: Thread-1  count1 value = 147
    Thread name: Thread-1 count2 value = 147
    Thread name: Thread-1  count1 value = 148
    Thread name: Thread-1 count2 value = 148
    Thread name: Thread-1  count1 value = 149
    Thread name: Thread-1 count2 value = 149
    Thread name: Thread-1  count1 value = 150
    Thread name: Thread-1 count2 value = 150
    Thread name: Thread-1  count1 value = 151
    Thread name: Thread-1 count2 value = 151
    Thread name: Thread-1  count1 value = 152
    Thread name: Thread-1 count2 value = 152
    Thread name: Thread-1  count1 value = 153
    Thread name: Thread-1 count2 value = 153
    Thread name: Thread-1  count1 value = 154
    Thread name: Thread-1 count2 value = 154
    Thread name: Thread-1  count1 value = 155
    Thread name: Thread-1 count2 value = 155
    Thread name: Thread-1  count1 value = 156
    Thread name: Thread-1 count2 value = 156
    Thread name: Thread-1  count1 value = 157
    Thread name: Thread-1 count2 value = 157
    Thread name: Thread-1  count1 value = 158
    Thread name: Thread-1 count2 value = 158
    Thread name: Thread-1  count1 value = 159
    Thread name: Thread-1 count2 value = 159
    Thread name: Thread-1  count1 value = 160
    Thread name: Thread-1 count2 value = 160
    Thread name: Thread-1  count1 value = 161
    Thread name: Thread-1 count2 value = 161
    Thread name: Thread-1  count1 value = 162
    Thread name: Thread-1 count2 value = 162
    Thread name: Thread-1  count1 value = 163
    Thread name: Thread-1 count2 value = 163
    Thread name: Thread-1  count1 value = 164
    Thread name: Thread-1 count2 value = 164
    Thread name: Thread-1  count1 value = 165
    Thread name: Thread-1 count2 value = 165
    Thread name: Thread-1  count1 value = 166
    Thread name: Thread-1 count2 value = 166
    Thread name: Thread-1  count1 value = 167
    Thread name: Thread-1 count2 value = 167
    Thread name: Thread-1  count1 value = 168
    Thread name: Thread-1 count2 value = 168
    Thread name: Thread-1  count1 value = 169
    Thread name: Thread-1 count2 value = 169
    Thread name: Thread-1  count1 value = 170
    Thread name: Thread-1 count2 value = 170
    Thread name: Thread-1  count1 value = 171
    Thread name: Thread-1 count2 value = 171
    Thread name: Thread-1  count1 value = 172
    Thread name: Thread-1 count2 value = 172
    Thread name: Thread-1  count1 value = 173
    Thread name: Thread-1 count2 value = 173
    Thread name: Thread-1  count1 value = 174
    Thread name: Thread-1 count2 value = 174
    Thread name: Thread-1  count1 value = 175
    Thread name: Thread-1 count2 value = 175
    Thread name: Thread-1  count1 value = 176
    Thread name: Thread-1 count2 value = 176
    Thread name: Thread-1  count1 value = 177
    Thread name: Thread-1 count2 value = 177
    Thread name: Thread-1  count1 value = 178
    Thread name: Thread-1 count2 value = 178
    Thread name: Thread-1  count1 value = 179
    Thread name: Thread-1 count2 value = 179
    Thread name: Thread-1  count1 value = 180
    Thread name: Thread-1 count2 value = 180
    Thread name: Thread-1  count1 value = 181
    Thread name: Thread-1 count2 value = 181
    Thread name: Thread-1  count1 value = 182
    Thread name: Thread-1 count2 value = 182
    Thread name: Thread-1  count1 value = 183
    Thread name: Thread-1 count2 value = 183
    Thread name: Thread-1  count1 value = 184
    Thread name: Thread-1 count2 value = 184
    Thread name: Thread-1  count1 value = 185
    Thread name: Thread-1 count2 value = 185
    Thread name: Thread-1  count1 value = 186
    Thread name: Thread-1 count2 value = 186
    Thread name: Thread-1  count1 value = 187
    Thread name: Thread-1 count2 value = 187
    Thread name: Thread-1  count1 value = 188
    Thread name: Thread-1 count2 value = 188
    Thread name: Thread-1  count1 value = 189
    Thread name: Thread-1 count2 value = 189
    Thread name: Thread-1  count1 value = 190
    Thread name: Thread-1 count2 value = 190
    Thread name: Thread-1  count1 value = 191
    Thread name: Thread-1 count2 value = 191
    Thread name: Thread-1  count1 value = 192
    Thread name: Thread-1 count2 value = 192
    Thread name: Thread-1  count1 value = 193
    Thread name: Thread-1 count2 value = 193
    Thread name: Thread-1  count1 value = 194
    Thread name: Thread-1 count2 value = 194
    Thread name: Thread-1  count1 value = 195
    Thread name: Thread-1 count2 value = 195
    Thread name: Thread-1  count1 value = 196
    Thread name: Thread-1 count2 value = 196
    Thread name: Thread-1  count1 value = 197
    Thread name: Thread-1 count2 value = 197
    Thread name: Thread-1  count1 value = 198
    Thread name: Thread-1 count2 value = 198
    Thread name: Thread-1  count1 value = 199
    Thread name: Thread-1 count2 value = 199
    Thread name: Thread-1  count1 value = 200
    Thread name: Thread-1 count2 value = 200
    Count1=200  Count2=200