java线程共享变量与静态变量

来源:互联网 发布:疯狗雾化器做丝数据 编辑:程序博客网 时间:2024/05/02 00:05

以下三种情况说明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;@Overridepublic 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;@Overridepublic 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;@Overridepublic void run() {for (int i = 0; i < 10; i++) {num = num + i;}System.out.println("全局变量变量的值:" + num);}}
输出:

全局变量变量的值:45
全局变量变量的值:90



原创粉丝点击