java全局变量在线程中应用

来源:互联网 发布:淘宝店铺主营 编辑:程序博客网 时间:2024/05/01 17:27
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;@Overrideprotected 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{//测试在另外类中全局变量的变化@Overridepublic void run() {// TODO Auto-generated method stubsuper.run();a+=10;Log.e("fda", "in the Thread a --->"+a);}}}

打印结果:


问题:

为什么有时手机打印12,有时又打印22:?

从图片上可以看出:打印12时,是先显示“after Thread”也就是说线程在textView.append(""+a);之后才执行的,测试线程还为执行,所以打印12。当然打印22时是在线程执行之后得到结果赋给了全局变量。在程序中我们使用线程时因为它处理比较耗时的操作,Activity也不能等着处理(如果放在主程序中则会显示程序长时间无响应,会被关闭),用的时候要注意。

0 0
原创粉丝点击