8 个解决方案
#1
Callable可以做你的需求。
#3
补充一下问题,我的项目目前版本只能用Java1.4做,Callable是1.5的函数,目前不支持,希望在使用Runnable接口实现时,也能找到好的方法实现子线程向主线程传递数据!
#4
看你之前的帖子,刚回复了,http://topic.csdn.net/u/20100608/14/e4772b37-757f-41b8-8aa8-f7e1c2e2aa17.html?seed=1441256914&r=66088162#r_66088162
用个 static ConcurrentHashMap<String, list[]>
用个 static ConcurrentHashMap<String, list[]>
#5
synchronize(biglist)
{
biglist.add(smalllist);
}
{
biglist.add(smalllist);
}
#6
见过你之前的帖子,让他们一起操作一个共享数据结构吧,也许可以的。
#7
楼主看看下面的例子,join可以实现你的需求
package cn.tyb.thread;
public class ThreadJoin extends Thread{
private String type;
private Object o;
public ThreadJoin(String type){
this.type=type;
}
public void run(){
//测试代码
int i=0;
while(true){
if(i>=10){
break;
}
System.out.println(type+": "+i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
i++;
}
//要放回的值
o=i;
}
public Object get(){
try {
//若该线程已经执行完了,则返回o
this.join();
return o;
} catch (InterruptedException e) {
e.printStackTrace();
return null;
}
}
public static void main(String[] args) throws InterruptedException{
ThreadJoin tj1 = new ThreadJoin("A");
ThreadJoin tj2 = new ThreadJoin("B");
//这里可以开n个线程
tj1.start();
tj2.start();
//线程开完之后再调用获取返回值的方法
System.out.println(tj1.get());
System.out.println(tj2.get());
}
}
#8
谢谢,我已经搞定
#1
Callable可以做你的需求。
#2
#3
补充一下问题,我的项目目前版本只能用Java1.4做,Callable是1.5的函数,目前不支持,希望在使用Runnable接口实现时,也能找到好的方法实现子线程向主线程传递数据!
#4
看你之前的帖子,刚回复了,http://topic.csdn.net/u/20100608/14/e4772b37-757f-41b8-8aa8-f7e1c2e2aa17.html?seed=1441256914&r=66088162#r_66088162
用个 static ConcurrentHashMap<String, list[]>
用个 static ConcurrentHashMap<String, list[]>
#5
synchronize(biglist)
{
biglist.add(smalllist);
}
{
biglist.add(smalllist);
}
#6
见过你之前的帖子,让他们一起操作一个共享数据结构吧,也许可以的。
#7
楼主看看下面的例子,join可以实现你的需求
package cn.tyb.thread;
public class ThreadJoin extends Thread{
private String type;
private Object o;
public ThreadJoin(String type){
this.type=type;
}
public void run(){
//测试代码
int i=0;
while(true){
if(i>=10){
break;
}
System.out.println(type+": "+i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
i++;
}
//要放回的值
o=i;
}
public Object get(){
try {
//若该线程已经执行完了,则返回o
this.join();
return o;
} catch (InterruptedException e) {
e.printStackTrace();
return null;
}
}
public static void main(String[] args) throws InterruptedException{
ThreadJoin tj1 = new ThreadJoin("A");
ThreadJoin tj2 = new ThreadJoin("B");
//这里可以开n个线程
tj1.start();
tj2.start();
//线程开完之后再调用获取返回值的方法
System.out.println(tj1.get());
System.out.println(tj2.get());
}
}
#8
谢谢,我已经搞定