Java 在线程/代码编译调试方面需要帮助
Java need help in threads/ code compiling debugging
问题2:
我有几乎相同的问题但是有线程
这是代码:
public class Example5 implements Runnable {
static int a=0;
public Example5() {
a++;
}
public int getA() {
return (a);
}
public void run() {
System.out.println(getA());
}
public static void main(String[] s) {
Example5 ex1 = new Example5();
new Thread(ex1).start();
Example5 ex2 = new Example5();
new Thread (ex2).start();
}
}
它对我说它必须打印:
1 或 2
2个
任何人都可以在线程中解释这一点。
也有人可以向我解释当我这样做时会发生什么(与第一个问题无关)
Thread t = new Thread();
t.start();
Thread t2 = new Thread();
t2.start();
它们是按顺序工作的(比如第一个线程先工作然后第二个线程)还是随机工作。
谢谢
Example5 ex1 = new Example5(); // a = 1
new Thread(ex1).start(); // start a new thread that will execute independently from current thread
Example5 ex2 = new Example5(); // a = 2 (a is static hence shared)
new Thread (ex2).start(); // start a new thread again
// thread1 and thread2 finish (the order is not determined - could be
// thread2 first, then thread1)
// prints: 2 2
// If Thread1 finishes before the second "new Example5()" completes
// prints: 1 2
最后一个问题:有点随机。由于您的 3 个线程(当前、生成的线程 1、生成的线程 2)之间没有同步。
问题2: 我有几乎相同的问题但是有线程 这是代码:
public class Example5 implements Runnable {
static int a=0;
public Example5() {
a++;
}
public int getA() {
return (a);
}
public void run() {
System.out.println(getA());
}
public static void main(String[] s) {
Example5 ex1 = new Example5();
new Thread(ex1).start();
Example5 ex2 = new Example5();
new Thread (ex2).start();
}
}
它对我说它必须打印: 1 或 2 2个 任何人都可以在线程中解释这一点。
也有人可以向我解释当我这样做时会发生什么(与第一个问题无关)
Thread t = new Thread();
t.start();
Thread t2 = new Thread();
t2.start();
它们是按顺序工作的(比如第一个线程先工作然后第二个线程)还是随机工作。 谢谢
Example5 ex1 = new Example5(); // a = 1
new Thread(ex1).start(); // start a new thread that will execute independently from current thread
Example5 ex2 = new Example5(); // a = 2 (a is static hence shared)
new Thread (ex2).start(); // start a new thread again
// thread1 and thread2 finish (the order is not determined - could be
// thread2 first, then thread1)
// prints: 2 2
// If Thread1 finishes before the second "new Example5()" completes
// prints: 1 2
最后一个问题:有点随机。由于您的 3 个线程(当前、生成的线程 1、生成的线程 2)之间没有同步。