-
/**
-
* 基础线程对象.
-
*
-
* @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!");
-
}
-
-
}