线程中全局变量和成员变量
来源:互联网 发布:抱枕淘宝 编辑:程序博客网 时间:2024/06/02 19:05
在线程中,run方法中调用的变量不同,那么程序运行的结果也不同,变量属于成员变量还是属于局部变量,要处理对象的变量还是方法中的变量会导致结果的差异性。
1)线程处理了全局变量
package com.medivh.thread;public class ThreadTest3{public static void main(String[] args){Runnable f = new First();Thread t = new Thread(f);Thread t1 = new Thread(f);t.start();t1.start();}}class First implements Runnable{int i;public void run(){ int i=0; while (true){System.out.println("First"+ this.i++);try{Thread.sleep((long) Math.random()*1000);} catch (InterruptedException e){e.printStackTrace();}if(10==this.i){break;}}}}测试结果:
First0
First1
First2
First3
First4
First5
First6
First7
First8
First9
至始至终只有一个First对象,而方法中调用的是this.i 那么就是全部变量,所以当全局变量i==10时,run方法结束。
2)线程调用局部变量
package com.medivh.thread;public class ThreadTest3{public static void main(String[] args){Runnable f = new First();Thread t = new Thread(f);Thread t1 = new Thread(f);t.start();t1.start();}}class First implements Runnable{int i;public void run(){ int i=0; while (true){System.out.println("First"+ i++);try{Thread.sleep((long) Math.random()*1000);} catch (InterruptedException e){e.printStackTrace();}if(10==i){break;}}}}
测试结果:
First0
First1
First2
First3
First4
First5
First6
First7
First8
First9
First0
First1
First2
First3
First4
First5
First6
First7
First8
First9
run方法中调用的this.i的全局变量,而只调用的方法中的变量,而方法执行了两次,所以结果有20条。
0 0
- 线程中全局变量和成员变量
- OC中局部变量,全局变量和成员变量
- 成员变量、局部变量和全局变量
- 全局变量,局部变量和成员变量
- 成员变量、局部变量和全局变量
- 局部变量和成员变量(全局变量)
- 局部变量和全局变量(成员变量)
- 成员变量,全局变量区别
- java中成员变量、局部变量、全局变量的区别
- 什么是局部变量和成员变量(全局变量)?
- 局部变量和全局变量以及成员变量的区别
- 局部变量和全局变量以及成员变量的区别
- 成员变量 局部变量 全局变量
- 在线程中执行类成员变量
- 多线程编程中,线程内成员变量
- C/C++中全局变量和局部变量
- SQL中全局变量和局部变量
- c语言中全局变量和局部变量
- linux常用命令
- Post office (区间dp 记忆化搜索) http://acm.zzuli.edu.cn/problem.php?id=1468
- DSP Builtder11.0搭配 QUARTUS11.0 MATLAB2011B 破解成功
- JFrame设置背景图片
- 数据分析技术—关系数据库理论
- 线程中全局变量和成员变量
- 路由器端口映射设置方法
- HOW TO FIX No module named pywintypes
- root用户修改普通用户文件
- JDBC连接MySQL数据库及示例
- 51系列小型操作系统精髓 简单实现4
- Java中hashCode和equals详解
- xml与DTD以及XML Schema的关系
- 用内存映射文件解决大文件读取问题