小编amu*_*u00的帖子

在多线程程序中更新共享资源

有人可以解释以下程序的输出:

public class DataRace extends Thread {
    static ArrayList<Integer> arr = new ArrayList<>();

    public void run() {
        Random random = new Random();
        int local = random.nextInt(10) + 1;
        arr.add(local);
    }

    public static void main(String[] args) {
        DataRace t1 = new DataRace();
        DataRace t2 = new DataRace();
        DataRace t3 = new DataRace();
        DataRace t4 = new DataRace();

        t1.start();
        t2.start();
        t3.start();
        t4.start();

        try {
            t1.join();
            t2.join();
            t3.join();
            t4.join();
        
        } catch (InterruptedException e) {
            System.out.println("interrupted");
        }

        System.out.println(DataRace.arr);

    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

  • [8, 5]
  • [9, …

java parallel-processing concurrency multithreading data-race

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