Android中的java层的线程暂停和恢复实现
2013-06-18 11:12
281 查看
/**
* 基础线程对象.
*
* @author jevan
* @version (1.0 at 2013-6-17)
* @version (1.1 at 2013-7-2) 增加onDestory接口{@link #onDestory()},增加stop方法{@link #stop() }。
*/
public
abstract
class BaseThread implements Runnable {
public
static
final
int SUSPEND_TIME_MILLISECONDS = 50;
private String name;
private Thread mThread;
private
boolean suspendFlag = false;// 控制线程的执行
// private int i = 0;
private String TAG = getName();
/**
* 构造函数
* @param name 线程名称。
* @param suspend 初始化是否暂停。
*/
public BaseThread(String name, boolean suspend) {
suspendFlag = suspend;
this.name = name;
mThread = new Thread(this, name);
System.out.println("new Thread: " + mThread);
mThread.start();
}
public
void run() {
try {
while (true) {
// System.out.println(name + ": " + i++);
synchronized (this) {
while (suspendFlag) {
wait();
}
}
Thread.sleep(SUSPEND_TIME_MILLISECONDS);
process();
}
} catch (InterruptedException e) {
e.printStackTrace();
onDestory();
}
Log.i(TAG, name + " exited");
}
/**
* 线程处理接口。
*/
public
abstract
void process();
/**
* 线程暂停
*/
public
void suspend() {
this.suspendFlag = true;
}
/**
* 唤醒线程
*/
public
synchronized
void resume() {
this.suspendFlag = false;
notify();
}
/**
* 返回线程名
*
* @return name
*/
public String getName() {
return name;
}
/**
* 获取线程对象。
*
* @return 线程对象。
*/
public Thread getT() {
return mThread;
}
/**
* 停止线程运行。
*/
public
void stop() {
if (mThread != null){
mThread.interrupt();
mThread = null;
}
}
/**
* 线程处理接口。
*/
public
void onDestory()
{
Log.i(TAG, name + " destory!");
}
}
* 基础线程对象.
*
* @author jevan
* @version (1.0 at 2013-6-17)
* @version (1.1 at 2013-7-2) 增加onDestory接口{@link #onDestory()},增加stop方法{@link #stop() }。
*/
public
abstract
class BaseThread implements Runnable {
public
static
final
int SUSPEND_TIME_MILLISECONDS = 50;
private String name;
private Thread mThread;
private
boolean suspendFlag = false;// 控制线程的执行
// private int i = 0;
private String TAG = getName();
/**
* 构造函数
* @param name 线程名称。
* @param suspend 初始化是否暂停。
*/
public BaseThread(String name, boolean suspend) {
suspendFlag = suspend;
this.name = name;
mThread = new Thread(this, name);
System.out.println("new Thread: " + mThread);
mThread.start();
}
public
void run() {
try {
while (true) {
// System.out.println(name + ": " + i++);
synchronized (this) {
while (suspendFlag) {
wait();
}
}
Thread.sleep(SUSPEND_TIME_MILLISECONDS);
process();
}
} catch (InterruptedException e) {
e.printStackTrace();
onDestory();
}
Log.i(TAG, name + " exited");
}
/**
* 线程处理接口。
*/
public
abstract
void process();
/**
* 线程暂停
*/
public
void suspend() {
this.suspendFlag = true;
}
/**
* 唤醒线程
*/
public
synchronized
void resume() {
this.suspendFlag = false;
notify();
}
/**
* 返回线程名
*
* @return name
*/
public String getName() {
return name;
}
/**
* 获取线程对象。
*
* @return 线程对象。
*/
public Thread getT() {
return mThread;
}
/**
* 停止线程运行。
*/
public
void stop() {
if (mThread != null){
mThread.interrupt();
mThread = null;
}
}
/**
* 线程处理接口。
*/
public
void onDestory()
{
Log.i(TAG, name + " destory!");
}
}
相关文章推荐
- Android中的java层的线程暂停和恢复实现
- Android中java线程的暂停与恢复
- Java线程暂停一段时间之后继续执行的实现方法
- Java多线程-一个简单的线程,实现挂起和恢复的功能
- Android中可以暂停和恢复的线程
- C# 线程的暂停和恢复的 实现
- java线程的暂停和恢复 suspend 和resume
- java线程暂停与恢复suspend和resume
- Java/Android倒计时(开始,暂停,恢复,停止)
- 2010-05-23 14:48 Java(6)线程暂停、恢复
- java线程停止、暂停和恢复等状态的控制
- java线程(暂停、恢复、结束)前引
- Android Java 线程暂停与继续
- Java多线程-一个简单的线程,实现挂起和恢复的功能
- Java多线程-一个简单的线程,实现挂起和恢复的功能
- java线程停止、暂停和恢复等状态的控制
- C# 线程的暂停和恢复的 实现
- java实现线程的暂停与继续(详解案例)
- iOS边练边学--多线程NSOperation介绍,子类实现多线程的介绍(任务和队列),队列的取消、暂停(挂起)和恢复,操作依赖与线程间的通信
- C# 线程的暂停和恢复的 实现