android线程池

来源:互联网 发布:阴茎抽筋知乎 编辑:程序博客网 时间:2024/06/06 00:48

线程池的小demo,自己是新手,做一下笔记


package com.example.testthread;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.view.Menu;
import android.widget.LinearLayout;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
 LinearLayout l;
 List<TextView> list=new ArrayList<TextView>();
 List<SeekBar> list1=new ArrayList<SeekBar>();
 Handler h=new Handler(){

  @Override
  public void handleMessage(Message msg) {
   // TODO Auto-generated method stub
   super.handleMessage(msg);
   int p=0;
   if(msg.what>100){
    p=100;
   }else{
    p=msg.what;
   }
   System.out.println("线程:"+msg.getData().getInt("k")+"  值:"+msg.what);
   list.get(msg.getData().getInt("k")).setText(msg.getData().getInt("k")+" : "+p+"");
   list1.get(msg.getData().getInt("k")).setProgress(p);
  }


 };
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  l=(LinearLayout)findViewById(R.id.ll);
  for (int i = 0; i < 10; i++) {
   list.add(new TextView(this));
   list.get(i).setText(i+" : "+"0");
   list1.add(new SeekBar(this));
   list1.get(i).setMax(100);
   list1.get(i).setProgress(0);

   l.addView(list.get(i));
   l.addView(list1.get(i));
  }
  ExecutorService t=Executors.newFixedThreadPool(2);

  for (int i  = 0; i < 10; i++) {
   final int  k=i;
   t.execute(new Runnable() {

    @Override
    public void run() {
     int n=0;
     h.post(new Runnable() {

      @Override
      public void run() {
       Toast.makeText(MainActivity.this, "线程 "+k+" 开始执行", 1000).show();

      }
     });
     while (n<100) {
      try {
       n+=Math.random()*10;

       Thread.sleep(200);
      } catch (InterruptedException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      }
      Message m=new Message();
      m.what=n;
      Bundle b=new Bundle();
      b.putInt("k", k);
      m.setData(b);
      h.sendMessage(m);


     }

    }
   });
   System.out.println("*");
  }

 }



}


0 0