问题: 在OnCreate函数里,有一个Handler线程处理,有一个Thread线程,我现在想将这个线程完执行完毕再执行Handler里面的线程,该怎么做啊,具体如下:// 检查版本的代码线程
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
if (config.version != 0) {
getversion gv_ = new getversion(handler4);
Thread t1 = new Thread(gv_);
t1.start();
}Thread t2 = new Thread(){
for(int i=0;i<100;i++)
System.out.pritnln(i);
};
t2.start();final Handler handler4 = new Handler() {
//....
}}我想先将t2线程中的全部执行完再执行t1线程,有什么办法吗? 谢谢
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
if (config.version != 0) {
getversion gv_ = new getversion(handler4);
Thread t1 = new Thread(gv_);
t1.start();
}Thread t2 = new Thread(){
for(int i=0;i<100;i++)
System.out.pritnln(i);
};
t2.start();final Handler handler4 = new Handler() {
//....
}}我想先将t2线程中的全部执行完再执行t1线程,有什么办法吗? 谢谢
2.在t1执行后,发一个消息给handler,在handler中执行
public void run(){
for(int i=0;i<100;i++)
System.out.pritnln(i);
handler.sendEmptryMessage(1);
}
}.start();
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case 1:
//开始执行t1;
break;
}
}
};
试试这个
super.onCreate(savedInstanceState);
...
if (config.version != 0) {
getversion gv_ = new getversion(handler4);
Thread t1 = new Thread(gv_);
synchronized(this)
{t1.start();
this.notifyAll()
}
}Thread t2 = new Thread(){
for(int i=0;i<100;i++)
System.out.pritnln(i);
};
synchronized(this){
t2.start();
}
线程执行完之后给Handler 发消息,让它做操作
if (config.version != 0) {
getversion gv_ = new getversion(handler4);
Thread t1 = new Thread(gv_);
t1.start();
}getversion里面发送了 "other"
有时收到thread里的信息先,有时收到other里的信息先。我想一直先收到thread里的消息先。。怎么让那个线程等待啊
2.启动两个线程,将第一个线程加入join() 第一个线程执行完就执行第二个线程,第二个线程去调用 handler