thread和runnable
2015-10-14 20:59
155 查看
转载:http://blog.csdn.net/wssiqi/article/details/8158370
截取了自己需要的一部分,方便自己以后学习,也贴出了原网址,方便需要的人。1.创建Android线程
参考官方文档是个好习惯。http://developer.android.com/reference/java/lang/Thread.html
http://developer.android.com/guide/components/processes-and-threads.html
创建线程有两种方式:一是在创建线程的时候传入一个Runnable对象,另一种是继承Thread类,实现run()方法。这两种方法没啥区别嘛。。。
Game start....
(1)用Runnable对象
源码MainActivity.java
package com.example.siqi; import android.os.Bundle; import android.app.Activity; import android.util.Log; import android.view.Menu; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /** * 线程1 */ new Thread(new Runnable(){ @Override public void run() { int cnt = 10; while(cnt>0) { Log.d("Thread1", "Thread one cnt: " + cnt--); try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(); break; } } } }).start(); /** * 线程2 */ new Thread(new Runnable(){ @Override public void run() { int cnt = 10; while(cnt>0) { Log.d("Thread2", "Thread two cnt: " + cnt--); try { Thread.sleep(300); } catch (InterruptedException e) { e.printStackTrace(); break; } } } }).start(); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } }
从结果我们可以看出,这两个线程的确是并行运行的。
(2)定义一个Thread
MainActivity.java
package com.example.siqi; import android.os.Bundle; import android.app.Activity; import android.util.Log; import android.view.Menu; public class MainActivity extends Activity { /** *定义一个简单的线程SimpleThread */ public class SimpleThread extends Thread { @Override public void run() { int cnt = 10; while(cnt>0) { Log.d("Thread", "Thread cnt: " + cnt--); try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(); break; } } } } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); SimpleThread thread1 = new SimpleThread(); SimpleThread thread2 = new SimpleThread(); thread1.start(); thread2.start(); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } }
相关文章推荐
- 深入浅出: 大小端模式
- Android 功能代码总结
- Python学习(二) 正则表达式
- C#using 用法
- 61 Rotate List
- python的range()函数用法
- 4-12 判断奇偶性 (10分)
- 华为、腾讯校招面试总结
- 机器学习系列(1)_逻辑回归初步
- Android环境的搭建及Android Studio的安装
- PostgreSQL attr correlation for values(logical order) & ctid (physcial order)
- json解析
- 私有云环境openstack-juno模板共享(用于个人学习)
- leetcode Remove Duplicates from Sorted List
- 智能楼宇智能家居BACnet通讯协议总结
- 【转】overload与override的区别
- burp suite中国乱码的解决方案
- 四则运算的进一步改善
- MyBatis插入数据之后返回插入记录的id
- K-Means 数据聚集算法