1) Thread

package com.example.androidrunnable;import android.os.Bundle;import android.app.Activity;import android.util.Log;import android.view.Menu;import android.view.View;import android.widget.Button;class MyThread extends Thread{/*循环标记*/public boolean flag=false;/*计数器*/private int counter=0;/*参数*/private String threadName;public MyThread(String _threadName){this.threadName=_threadName;}public void run(){while(flag){Log.i("tag", threadName+" "+String.valueOf(++counter));try {sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}public class MainActivity extends Activity {private Button startButton=null;private Button endButton=null;private MyThread myThread1=null;private MyThread myThread2=null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);/*开始线程*/startButton=(Button)findViewById(R.id.startButton);startButton.setOnClickListener(new Button.OnClickListener() {@Overridepublic void onClick(View v) {if(myThread1==null){myThread1=new MyThread("thread1");myThread1.flag=true;myThread1.start();}if(myThread2==null){myThread2=new MyThread("thread2");myThread2.flag=true;myThread2.start();}}});/*结束线程*/endButton=(Button)findViewById(R.id.endButton);endButton.setOnClickListener(new Button.OnClickListener() {@Overridepublic void onClick(View v) {if(myThread1!=null){myThread1.flag=false;myThread1=null;}if(myThread2!=null){myThread2.flag=false;myThread2=null;}}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}

Thread的运行结果



2) Runnable

package com.example.androidrunnable;import android.os.Bundle;import android.app.Activity;import android.util.Log;import android.view.Menu;import android.view.View;import android.widget.Button;class MyRunnable implements Runnable{/*循环标记*/public boolean flag=false;/*计数器*/private int counter=0;/*参数*/private String runnableName;public MyRunnable(String _runnableName){this.runnableName=_runnableName;}public void run(){while(flag){Log.i("tag", runnableName+" "+String.valueOf(++counter));try {Thread.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}public class MainActivity extends Activity {private Button startButton=null;private Button endButton=null;private MyRunnable myRunnable=null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);/*开始线程*/startButton=(Button)findViewById(R.id.startButton);startButton.setOnClickListener(new Button.OnClickListener() {@Overridepublic void onClick(View v) {if(myRunnable==null){myRunnable=new MyRunnable("runnable1");myRunnable.flag=true;/*Runnable可以实现资源共享*/new Thread(myRunnable).start();new Thread(myRunnable).start();}}});/*结束线程*/endButton=(Button)findViewById(R.id.endButton);endButton.setOnClickListener(new Button.OnClickListener() {@Overridepublic void onClick(View v) {if(myRunnable!=null){myRunnable.flag=false;myRunnable=null;}}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}
Runnable的运行结果



小结:

在程序开发中只要是多线程肯定永远以实现Runnable接口为主,因为实现Runnable接口相比继承Thread类有如下好处:

1)避免点继承的局限,一个类可以继承多个接口。
2)适合于资源的共享


以上面的程序为例

1)Thread都各自运行,没有实现资源共享

2)Runnable实现了资源共享


更多相关文章

  1. Android(安卓)多线程下载
  2. 我今天的面试题,注册广播有几种方式,这些方式有何优缺点?请谈谈Andr
  3. 浅谈Android中的线程的通信及Handle机制
  4. Android学习记录(6)—将java中的多线程下载移植到Android中(即多线
  5. [置顶] Android学习记录(6)—将java中的多线程下载移植到Android中
  6. Android(安卓)Handle消息机制:秒懂Looper、Handler、Message三者
  7. FregServer进程,启动Binder线程池,睡眠等待在proc->wait
  8. android腾讯微博吹一吹实现原理
  9. android]Android(安卓)线程优先级修改

随机推荐

  1. Android的线程使用来更新UI----Thread、H
  2. Android(安卓)导读
  3. android:padding和android:margin的区别
  4. Android(安卓)Edittext 开发常见问题总结
  5. Android音乐播放器源码(歌词.均衡器.收藏
  6. android 真机 安装 模拟器 DevTools Deve
  7. [Android]电话拨号器
  8. Android(安卓)Menu
  9. android gif
  10. Android(安卓)RabbitMQ入门第一章