您的位置:首页 > 编程语言 > Java开发

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也不能等着处理(如果放在主程序中则会显示程序长时间无响应,会被关闭),用的时候要注意。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: