java全局变量在线程中应用
2015-02-06 11:27
190 查看
package com.example.testglobal; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.widget.TextView; public class MainActivity extends Activity { TextView textView; int a=0; int b; NewThread newThread; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView=(TextView)findViewById(R.id.text1); a=12; newThread=new NewThread(); newThread.start(); Log.e("dfs", "after Thread"); textView.append(""+a); //测试while中全局变量变化 Log.e("fdsa", "before while b--->"+b); while(true){ b++; Log.e("fdsa", "b-->"+b); if (b>5) { break; } } Log.e("fdsa","after while b--->"+b); } class NewThread extends Thread{//测试在另外类中全局变量的变化 @Override public void run() { // TODO Auto-generated method stub super.run(); a+=10; Log.e("fda", "in the Thread a --->"+a); } } }
打印结果:
问题:
为什么有时手机打印12,有时又打印22:?
从图片上可以看出:打印12时,是先显示“after Thread”也就是说线程在textView.append(""+a);之后才执行的,测试线程还为执行,所以打印12。当然打印22时是在线程执行之后得到结果赋给了全局变量。在程序中我们使用线程时因为它处理比较耗时的操作,Activity也不能等着处理(如果放在主程序中则会显示程序长时间无响应,会被关闭),用的时候要注意。
相关文章推荐
- linux 多线程应用--线程内部私有的全局变量
- python线程的使用方法以及全局变量的应用
- linux多线程应用--线程内部私有的全局变量
- 【Android应用源码分析】Java多线程:线程本地变量ThreadLocal源码分析
- linux多线程应用--线程内部私有的全局变量(转载)
- Java线程:线程私有变量
- java中的全局变量与局部变量
- ◆Delphi多线程编程之五不同类线程读写全局变量-阻塞和锁定◆
- java中的全局变量
- BlackBerry通过全局变量的发送和接收来更新应用界面数据
- java中的全局变量
- 全局变量的初值——Ada应用实例之七
- Java线程:线程栈模型与线程的变量
- VC++基础 使用全局变量控制线程运行
- Linux下的Java局部与全局环境变量的配置
- Java中线程的高级应用
- Javascript最佳实践-应用Module Pattern>尽量减少全局变量
- Python: threading.local是全局变量但是它的值却在当前调用它的线程当中
- 如何声明一个全局变量,可以在应用的任何单元引用
- Java中线程的高级应用