首页 > 解决方案 > 如何在多个线程不同步的情况下检查功能

问题描述

考虑这段代码:

public class test2 {
public static void main(String[] args) throws Exception{


    Thread t1 = new Thread(new Runnable() {
        public void run() {
            for(int i = 0; i<1000000; i++) {

            }
        }
    });

    Thread t2 = new Thread(new Runnable() {
        public void run() {
            Out.println("Counter" +" "+ i);
        }
    });

    t1.start();
    t2.start();

}

}

此代码用于完成此任务:

实现一个程序,其中线程将计数器(静态字段)递增 1000000 次。另一个线程应立即输出相同的计数器,而无需等待第一个线程结束。

我的代码对吗?我问的原因是因为输出始终为 0,我不确定这是否正确。当没有同步播放时,我对如何检查代码的功能感到困惑。

标签: javamultithreading

解决方案


问题是您的代码缺少必填static字段(例如i,在下面给出的代码中)。

class Main {
    // Counter
    static int i = 0;   

    public static void main(String[] args) throws Exception {    
        Thread t1 = new Thread(new Runnable() {
            public void run() {
                for (i = 0; i < 1000000; i++) {

                }
            }
        });

        Thread t2 = new Thread(new Runnable() {
            public void run() {
                System.out.println("Counter" + " " + i);
            }
        });

        t1.start();
        t2.start();
    }
}

输出:

Counter 8588

推荐阅读