아래 Runable을 Thread로 변경할려고하는데 이런 에러가 나네요
W/System.err( 7003): java.lang.IllegalThreadStateException: Thread already started.
W/System.err( 7003): at java.lang.Thread.start(Thread.java:1227)
....
기능은 간단합니다. 10밀리초마다 초를 찍는건데 Thread로 구성이 잘안되네요.
Stop,Start한 StopWatch를 구성하는것거등요
public class Main extends Activity {
Button btnReset = null;
Button btnRun = null;
Handler mhand = null;
Runnable mUpdateTimeTask = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnReset = (Button) findViewById(R.id.btn_reset);
btnRun = (Button) findViewById(R.id.btn_run);
btnReset.setOnClickListener(btnClick);
btnRun.setOnClickListener(btnClick);
mhand = new Handler();
mUpdateTimeTask = new Runnable() {
public void run() {
long l = System.currentTimeMillis();
Log.d("DEV","Log : "+l);
mhand.postDelayed(mUpdateTimeTask, 10);
}
};
}
Button.OnClickListener btnClick = new View.OnClickListener() {
public void onClick(View v){
if( v.getId() == R.id.btn_run ){
mhand.removeCallbacks(mUpdateTimeTask);
mhand.postDelayed(mUpdateTimeTask, 100);
}else if( v.getId() == R.id.btn_reset ){
mhand.removeCallbacks(mUpdateTimeTask);
}
}
};
}
**Thread로 변경******************************************************
public class Main extends Activity {
Button btnReset = null;
Button btnRun = null;
BackThread proc = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnReset = (Button) findViewById(R.id.btn_reset);
btnRun = (Button) findViewById(R.id.btn_run);
btnReset.setOnClickListener(btnClick);
btnRun.setOnClickListener(btnClick);
proc = new BackThread();
}
Button.OnClickListener btnClick = new View.OnClickListener() {
public void onClick(View v){
if( v.getId() == R.id.btn_run ){
mHandler.sendEmptyMessage(TIME_RUN);
}else if( v.getId() == R.id.btn_reset ){
mHandler.sendEmptyMessage(TIME_STOP);
}
}
};
private final int TIME_RUN = 100;
private final int TIME_STOP = 200;
Handler mHandler = new Handler(){
public void handleMessage(Message msg){
if( msg.what == TIME_RUN ){
try{
proc.join();
proc.start();
}catch(Exception e){
e.printStackTrace();
}
}else if( msg.what == TIME_STOP ){
mHandler.removeMessages(TIME_RUN);
try{
//proc.join();
}catch(Exception e){
e.printStackTrace();
}
}
}
};
class BackThread extends Thread{
public void run(){
long l = System.currentTimeMillis();
Log.d("DEV","Log : "+l);
mHandler.sendEmptyMessageAtTime(TIME_RUN,10);
}
}
}




Thread는 start는 한번될 것이고 run메소드 수행 후 종료되지 않나요? new BackThread하시면..