java全局变量在线程中应用

本文探讨了Android应用中全局变量的使用与线程交互的问题。通过实例演示了主线程与子线程如何影响全局变量,并解释了不同情况下变量值的变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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也不能等着处理(如果放在主程序中则会显示程序长时间无响应,会被关闭),用的时候要注意。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值