2017-12-04 16 views
-1

휘발성 및 AtomicInteger 연습을 사용하면 코드의 출력이 사라져야한다는 것을 알았습니다. 누군가가 나를 도울 수 있기를 바랍니다. 그것은 출력을해야이 문제휘발성 및 AtomicInteger 연습을 사용하면 출력 코드의 출력이 사라져야 함을 알게되었습니다.

를 해결하지만, 출력이 사라 코드는 여기에 있습니다 :

package volatil; 

import java.util.concurrent.atomic.AtomicInteger; 

public class Count extends Thread { 

    // private static volatile AtomicInteger key =new AtomicInteger(0); 
    private static AtomicInteger key = new AtomicInteger(1); 

    private static void add() { 
    for (int i = 0; i < 1000; i++) { 
     key.incrementAndGet(); 
    } 
    System.out.println("now key is " + key); 
    } 

    @Override 
    public void run() { 
    add(); 
    } 

    public static void main(String[] args) { 
    Count[] counts = new Count[10]; 
    for (int i = 0; i < 10; i++) { 
     counts[i] = new Count(); 
    } 
    for (int i = 10; i < 10; i++) { 
     counts[i].start(); 
    } 
    } 
} 

이 코드는 동일 코드는 여기에 있습니다 :

package volatil; 

public class Count extends Thread { 

    private static volatile int key; 

    private static void add() { 
     for (int i = 0; i < 1000; i++) { 
      key++; 
     } 
     System.out.println("now key is " + key); 
    } 

    @Override 
    public void run() { 
     add(); 
    } 

    public static void main(String[] args) { 
     Count[] counts = new Count[10]; 
     for (int i = 0; i < 10; i++) { 
      counts[i] = new Count(); 
     } 
     for (int i = 10; i < 10; i++) { 
      counts[i].start(); 
     } 
    } 
} 

답변

0

for 루프의 값이 잘못되었습니다. 이 :

for (int i = 10; i < 10; i++) 

은 다음과 같아야합니다

for (int i = 0; i < 10; i++)