package com.example.threadtest;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends ActionBarActivity {
private Button startBtn;
private Button runBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
startBtn = (Button) findViewById(R.id.start);
runBtn = (Button) findViewById(R.id.run);
startBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Log.i("test", "startBtn onclick" );
new ThreadTest().start();
}
});
runBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Log.i("test", "runBtn onclick" );
new ThreadTest().run();
}
});
}
class ThreadTest extends Thread {
@Override
public void run() {
for (int i = 0; i < 5; i++) {
try {
Log.i("test", "ThreadTest currentId:" + getId() + " i:" + i);
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
super.run();
}
}
}
界面如下:
操作步骤:进入app后,点击start 按钮->过两秒左右,再点击start按钮。log信息如下:
操作步骤:进入app后,点击run按钮->过两秒左右,再点击run按钮。log信息如下:
start 方法是开启了一个线程,所以能够并行执行,无需等待run方法执行完就可以执行接下来的代码,而run方法就是一个类的一个方法,程序需要等待run方法执行完后才能继续执行接下来的代码。