在学校得时候Java基础没有学习好,对于线程一只搞不懂,对它的了解几乎是零。刚毕业工作终遇到线程的问题我是能躲就躲。好吧,这次我躲不过了,就先写个小Demo研究下,也算是我日常工作中的一种积累吧。
1.创建一个Thread和Hander对象,重写run方法和handleMessage方法。
public class MainActivity extends Activity implements Callback, Runnable {
private Handler hander;
private Thread thread;
// 开辟子线程
private Handler hd;
private Thread th;
private boolean RUN = true;
private int i = 0;
private int j = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
hander = new Handler(this);
thread = new Thread(this);
thread.start();
}
@Override
public void run() {
while (RUN) {
i++;
System.out.println("我是程序媛" + i);
childThread();// 开辟一个子线程
try {
thread.sleep(4000);
hander.obtainMessage(1).sendToTarget();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
private void childThread() {
j = 0;
th = new Thread() {
@Override
public void run() {
while (true) {
if (j >= 4) {
break;
} else {
j++;
System.out.println("我是子程序员哦" + j);
try {
th.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
};
th.start();
}
@Override
public boolean handleMessage(Message msg) {
if (msg.what == 1) {
if (i < 4) {
Toast.makeText(MainActivity.this, "成功啦", Toast.LENGTH_SHORT).show();
RUN = true;
} else {
RUN = false;
}
}
return true;
}
}
出现的结果如下:
![](http://static.oschina.net/uploads/space/2012/1108/153430_ZUCl_258269.png)