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