最近看看了线程,有点乱,下面是个例子,我自己的理解是这样的:
1、实现了给线程传递参数;
2、实现了多线程;

如有不对请指点;

DEMO:http://download.csdn.net/detail/small5e4444/9058185

代码:

public class MainActivity extends Activity {

MyThread StartThread;private Handler handlerThread; int comRestart=0; int comJoin=0;@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    /**     * 开启一个线程     */    StartThread = new MyThread();       StartThread.start();}/** * MyThread * @author Administrator * */class MyThread extends Thread {      public void run() {          System.out.println("线程启动");        //建立消息循环的步骤        Looper.prepare();//1、初始化Looper        handlerThread = new Handler(){//2、绑定handler到CustomThread实例的Looper对象            public void handleMessage (Message msg) {//3、定义处理消息的方法                switch(msg.what) {                case 3://重启                    System.out.println("线程收到A的数据--comRestart:"+comRestart);                    try {                        Thread.sleep(1000);//线程先等待1s,看是否收到了返回值;                    } catch (InterruptedException e1) {                        // TODO Auto-generated catch block                        e1.printStackTrace();                    }                    while(comRestart<4){//连续执行之前的操作3次                        if(comRestart==3){//三次发送都失败啦                            /**                             * 处理数据                             */                            System.out.println("case 3命令--连续3次错误");                        }else{                            try {                                /**                                 * 线程等待1s的目的是,等待我发送命令后的返回值,如果1秒内收到返回值,那么就停掉这个线程                                 * 如果1s内没有收到返回值,在这个线程里,连续发送3次之前的命令;                                 * Demo,用System.out代替了命令                                 */                                Thread.sleep(1000);                            } catch (InterruptedException e) {                                // TODO Auto-generated catch block                                e.printStackTrace();                            }                            System.out.println("comRestart没有收到正确数据,测试发送三次,第"+comRestart+"次");                            //原来放了个自定义 发送命令的方法,发送命令                            myRestart();                            System.out.println("comRestart从新发送第"+comRestart+"次");                        }                        comRestart++;                    }                    break;                case 4://允许加入                    System.out.println("线程收到A的数据--comJoin:"+comJoin);                    try {                        Thread.sleep(1000);//线程先等待1s,看是否收到了返回值;                    } catch (InterruptedException e1) {                        // TODO Auto-generated catch block                        e1.printStackTrace();                    }                    while(comJoin<4){                        if(comJoin==3){//三次发送都失败啦                        }else{                            try {                                Thread.sleep(1000);                            } catch (InterruptedException e) {                                // TODO Auto-generated catch block                                e.printStackTrace();                            }                            System.out.println("comJoin没有收到正确数据,测试发送三次,第"+comJoin+"次");                            myjoin();//调用                             System.out.println("comJoin从新发送第"+comJoin+"次");                        }                        comJoin++;                    }                    break;                }            }        };        Looper.loop();//4、启动消息循环   }}public void restart(View v){    myRestart();    //System.out.println("发送第一次命令:RESTART");    /**     * 开启一个线程 判断3秒钟之内是否能收到返回值     */    comRestart=0;    handlerThread.obtainMessage(3, "restart").sendToTarget();//发送消息到Thread实例}public void tojoin(View v){    myjoin();//调用    /**     * 开启一个线程 判断3秒钟之内是否能收到返回值     * 给线程传参数     */    comJoin=0;     handlerThread.obtainMessage(4, "comJoin").sendToTarget();//发送消息到Thread实例}private void myjoin(){    System.out.println("fsd-----发送命令:join");}private void myRestart(){    System.out.println("fsd-----发送命令:restart");}

}

更多相关文章

  1. 6.2、Android中向Internet发送xml数据
  2. Android(安卓)添加程序到桌面favorites列表
  3. Android(安卓)4.4以上使用HttpURLConnection底层使用OkHttp实现
  4. Android(安卓)Screen Monitor抓取真机屏幕
  5. Android(安卓)常见的几种加密方式RSA、CBC的集成
  6. android 百度地图定位功能实现
  7. android线程间通信和主线程更新ui
  8. Android中使用OrmLite来对SQLite数据库进行CRUD(增删改查)解析
  9. Android下的JNI创建多线程的方法

随机推荐

  1. android 学习笔记一
  2. android中能不能new Activity()对象引发
  3. Android开发便签7:如何让通讯录匹配N位号
  4. 【转】Android(安卓)签名详解
  5. android之getevent/sendevent/input
  6. Android中Handler的简析
  7. Android(安卓)性能测试实践(一)
  8. 分析android预装apk以及相关的实现手段
  9. android设置控件样式(边框颜色,圆角)和图片
  10. Android系统源代码情景分析 第3版