安卓 多线程

方法1:创建单独的线程

new Thread(new Runnable() {
	@Override
	public void run() {
		// TODO Auto-generated method stub
		Doingwork();
	}
}).start();

方法2:利用线程池:

    private ExecutorService executorService = Executors.newFixedThreadPool(4);
上面是创建一个固定大小的线程池,这里面的线程不会被关闭,一旦有任务则会分配给线程,但是如果线程都在执行,则排队等候

    private ExecutorService executorService = Executors.newCachedThreadPool();
这样则是创建一个缓存的线程池,线程被创建之后不会立即被销毁,而是作为备用线程缓存在那里,当一个任务结束之后马上又有第二个任务,这个线程就会去执行第二个任务,省去了创建线程和销毁线程的步骤,节省开销


将任务投入线程池的方法:

executorService.submit(work);
其中的work是Runnable类

任务需要这样写:

Runnable work = new Runnable() {
	@Override
	public void run() {
		// TODO Auto-generated method stub
		Doingwork();
	}
};



线程中操作UI的方法

方法之一是handler:

final Handler handler = new Handler(){
	@Override
	public void handleMessage(Message msg){
		super.handleMessage(msg);
		if(msg.what == 1){
		   	UIWork();
		}
	}
};
msg是为了区分不同的UI操作,比如点这个按钮就改变这个label,点那个按钮就改变那个图片,需要写不同的message

下面是线程中的操作:

Message message = new Message();
message.what=1;
handler.sendMessage(message);
这样的话UIWork()就会在主线程中完成,而不是在创建的线程中,因此不能在handler中执行耗时任务



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值