java中线程同步问题,。。。。 如何在一个线程结束后,紧接着执行其他操作?因为需要这个线程中初始化了某个数据,接下来的操作需要用到这个数据。。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.concurrent.TimeUnit;public class Test {public static void main(String[] args) throws Exception{List<Task> list = new ArrayList<Task>();Task temp = null;for (int i = 0; i < 4; i++) {temp = new Task(i * 2, "第" + i + "线程");list.add(temp);temp.start();}while (!list.isEmpty()) {Iterator<Task> iterator = list.iterator();while (iterator.hasNext()) {temp = iterator.next();if (!temp.isAlive()) {iterator.remove();}}TimeUnit.SECONDS.sleep(1);}System.out.println("所有任务执行完毕开始跳转");}}class Task extends Thread {private int sleepTime;private String threadName;public Task(int sleepTime, String threadName) {this.sleepTime = sleepTime;this.threadName = threadName;}@Overridepublic void run() {try {TimeUnit.SECONDS.sleep(sleepTime);System.out.println(threadName + "线程休眠" + sleepTime + "秒后结束执行");} catch (Exception e) {e.printStackTrace();}}} 这个是class GetInfoTask extends AsyncTask<Void, Void, Integer> {}重写了doInBackground();与onPostExcute()方法貌似没有isAlive()方法,只有if(getStatue()== STATUE.FINISHED)但是也不会一直判断。 join()方法就是干这个的。比如:有两个线程,一个是主线程,另一个是新开的线程t。主线程的代码如下:f1(); f2();执行f2时,需要用到线程t中的数据,那么,这样就可以了:f1(); t.join(); f2();jion()的作用就是合并线程,就是把两个线程的执行合并为了一个线程执行,执行顺序见上面的顺序。解决问题,找到一个合适的、自己能理解的就可以了,不需要去研究太深,除非这个方法解决不了你的问题。 JAVA 初级问题 泛型 问题 2 <T> 入参为数组的存储过程调用问题 出现commons.mail发送email出现:java.lang.NoClassDefFoundError错误 请教关于getByName方法的问题 各位大虾,求自动生成数值型ID的算法 高手请进! 已编译成功的程序为什么还会说“初始化错误”呢? 其他工具都可以通过的程序在JB里总是报错,为什么? 有关MouseMotionListener 新手 编译提示Picked up JAVA_TOOL_OPTIONS什么意思 实现一个简单的自发自收信息的功能的程序,但运行出错,不知道哪里出错,求大虾帮忙纠正
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.TimeUnit;public class Test {public static void main(String[] args) throws Exception{
List<Task> list = new ArrayList<Task>();
Task temp = null;
for (int i = 0; i < 4; i++) {
temp = new Task(i * 2, "第" + i + "线程");
list.add(temp);
temp.start();
}
while (!list.isEmpty()) {
Iterator<Task> iterator = list.iterator();
while (iterator.hasNext()) {
temp = iterator.next();
if (!temp.isAlive()) {
iterator.remove();
}
}
TimeUnit.SECONDS.sleep(1);
}System.out.println("所有任务执行完毕开始跳转");
}
}class Task extends Thread {
private int sleepTime;
private String threadName;public Task(int sleepTime, String threadName) {
this.sleepTime = sleepTime;
this.threadName = threadName;
}@Override
public void run() {
try {
TimeUnit.SECONDS.sleep(sleepTime);
System.out.println(threadName + "线程休眠" + sleepTime + "秒后结束执行");
} catch (Exception e) {
e.printStackTrace();
}
}
}
这个是class GetInfoTask extends AsyncTask<Void, Void, Integer> {}
重写了doInBackground();与onPostExcute()方法貌似没有isAlive()方法,只有if(getStatue()== STATUE.FINISHED)但是也不会一直判断。