以下三种情况说明java中全局变量与静态变量在线程间的关系
情况一:
/**
* 两个线程对【两】个对象操作,这两个对象的类中的【静态变量在线程间共享】
*
* @author thinktown
*
*/
public class Test1 {
public static void main(String[] args) {
Ru1 ru1 = new Ru1();
Ru1 ru2 = new Ru1();
new Thread(ru1).start();
new Thread(ru2).start();
}
}
class Ru1 implements Runnable {
private static int num = 0;
@Override
public void run() {
for (int i = 0; i < 10; i++) {
num = num + i;
}
System.out.println("静态变量的值:" + num);
}
}
输出:
静态变量的值:45
静态变量的值:90
情况二:
/**
* 两个线程对【两】个对象操作,这两个对象的类中的【全局变量在线程间互不影响】
*
* @author thinktown
*
*/
public class Test2 {
public static void main(String[] args) {
Ru2 ru1 = new Ru2();
Ru2 ru2 = new Ru2();
new Thread(ru1).start();
new Thread(ru2).start();
}
}
class Ru2 implements Runnable {
private int num = 0;
@Override
public void run() {
for (int i = 0; i < 10; i++) {
num = num + i;
}
System.out.println("全局变量变量的值:" + num);
}
}
输出:
全局变量变量的值:45
全局变量变量的值:45
情况三:
/**
* 两个线程对【一】个对象操作,这两个对象的类中的【全局变量在线程间共享】
*
* @author thinktown
*
*/
public class Test3 {
public static void main(String[] args) {
Ru3 ru1 = new Ru3();
new Thread(ru1).start();
new Thread(ru1).start();
}
}
class Ru3 implements Runnable {
private int num = 0;
@Override
public void run() {
for (int i = 0; i < 10; i++) {
num = num + i;
}
System.out.println("全局变量变量的值:" + num);
}
}
输出:
全局变量变量的值:45
全局变量变量的值:90