Java 如何在多线程不同步的情况下检查功能

Java 如何在多线程不同步的情况下检查功能,java,multithreading,Java,Multithreading,考虑以下代码: 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++) { } } }); Thre

考虑以下代码:

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();

}
公共类test2{
公共静态void main(字符串[]args)引发异常{
线程t1=新线程(新的可运行线程(){
公开募捐{

对于(int i=0;i而言,问题在于您的代码缺少所需的
static
字段(例如,下面给出的代码中的
i


线程1中的
i
和线程2中的
i
不一样。您可能是指
for(i=0;iYou说的是“静态字段”,但没有静态字段。在t2中访问的“main”有一个本地的“i”,在t1中有一个本地的“i”。您从不增加“main”i.哦,好的,我会记住的,谢谢!如果输出总是0,我想这没问题,但是正如Ben指出的那样,
x
不是静态的。你可能有一个
x
的本地捕获,这可能不是你想要的。(我认为
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