java线程的run()没有返回值怎么办?
用线程Thread执行一些方法后,需要判断执行是否成功。
publicvoidrun(){}
run()方法返回值是空,怎么办?
解决方法:
- Note
- 使用call()方法
- Callable接口是jdk5后新增的接口
代码:
packagecom.example.thread;
importjava.io.IOException;
importjava.io.InputStream;
importjava.net.HttpURLConnection;
importjava.net.MalformedURLException;
importjava.net.URL;
importjava.util.concurrent.Callable;
importandroid.util.Log;
importcom.example.StreamTool.StreamTool;
publicclassMyThread1implementsCallable<String>{
privatestaticfinalStringtag="xxxyyy";
privateStringphone;
privateStringname;
publicMyThread1(Stringname,Stringphone){
this.name=name;
this.phone=phone;
}
//publicMyThread1(Stringname,Stringphone){
//super(name);
//this.phone=phone;
//}
//publicvoidrun(){
//Log.i(tag,Thread.currentThread().getName()+"......start");
//Stringnewpath="http://www.dianping.com/ajax/json/account/reg/mobile/send?m="+phone+"&flow=t&callback=DP._JSONPRequest._5";
//StringBuilderstrBui=newStringBuilder(newpath);
//
//try{
//URLurl=newURL(strBui.toString());
//HttpURLConnectioncon=(HttpURLConnection)url.openConnection();
//con.addRequestProperty("Content-Type","text/html;charset=UTF-8");
//con.addRequestProperty(
//"User-Agent",
//"Mozilla/5.0(WindowsNT6.1)AppleWebKit/537.36(KHTML,likeGecko)Chrome/38.0.2125.104Safari/537.36");
//con.addRequestProperty("Cookie","_hc.v=\"\\\"0ffcdf91-a4d6-4b08-8800-3d59d2e2fe45.1413899372\\\"\";abtest=\"48,124\\|52,133\\|47,122\\|44,106\\|45,115\";__utma=1.29319792.1412090870.1413609669.1413645970.5;__utmz=1.1413645970.5.2.utmcsr=t.dianping.com|utmccn=(referral)|utmcmd=referral|utmcct=/xian;_tr.u=7dhY0yFhd9rY065F;tc=17;cy=17;cye=xian;t_rct=2172824|2171729|6457678;PHOENIX_ID=0a01743f-1492e1321c8-46e6a;13.t=17deda7d2a7d8e46d84bf12a74627b72;13.ts=cd3bd6495620e2a204912c4bdfd43220;thirdtoken=891671FC6B450418DD6E0611A3E4CF48;_hc.v=\"\\\"1bdad871-405e-46e3-97d6-46571ad48e14.1413897928\\\"\";_tr.s=Zy1Ca2OAe1ptv06o;JSESSIONID=891671FC6B450418DD6E0611A3E4CF48");
//con.addRequestProperty("Referer","http://t.dianping.com/register");
//con.setConnectTimeout(5000);
//con.setRequestMethod("GET");
//
//if(con.getResponseCode()==200){
//InputStreaminputStr=con.getInputStream();
//Stringinfo=newString(StreamTool.read(inputStr),"UTF-8");
//Log.i(tag,Thread.currentThread().getName()+info);
//}
//}catch(MalformedURLExceptione){
////TODOAuto-generatedcatchblock
//e.printStackTrace();
//}catch(IOExceptione){
////TODOAuto-generatedcatchblock
//e.printStackTrace();
//}catch(Exceptione){
////TODOAuto-generatedcatchblock
//e.printStackTrace();
//}
//
//
//}
@Override
publicStringcall()throwsException{
Log.i(tag,Thread.currentThread().getName()+"......start");
Stringnewpath="http://www.dianping.com/ajax/json/account/reg/mobile/send?m="+phone+"&flow=t&callback=DP._JSONPRequest._5";
StringBuilderstrBui=newStringBuilder(newpath);
try{
URLurl=newURL(strBui.toString());
HttpURLConnectioncon=(HttpURLConnection)url.openConnection();
con.addRequestProperty("Content-Type","text/html;charset=UTF-8");
con.addRequestProperty(
"User-Agent",
"Mozilla/5.0(WindowsNT6.1)AppleWebKit/537.36(KHTML,likeGecko)Chrome/38.0.2125.104Safari/537.36");
con.addRequestProperty("Cookie","_hc.v=\"\\\"0ffcdf91-a4d6-4b08-8800-3d59d2e2fe45.1413899372\\\"\";abtest=\"48,124\\|52,133\\|47,122\\|44,106\\|45,115\";__utma=1.29319792.1412090870.1413609669.1413645970.5;__utmz=1.1413645970.5.2.utmcsr=t.dianping.com|utmccn=(referral)|utmcmd=referral|utmcct=/xian;_tr.u=7dhY0yFhd9rY065F;tc=17;cy=17;cye=xian;t_rct=2172824|2171729|6457678;PHOENIX_ID=0a01743f-1492e1321c8-46e6a;13.t=17deda7d2a7d8e46d84bf12a74627b72;13.ts=cd3bd6495620e2a204912c4bdfd43220;thirdtoken=891671FC6B450418DD6E0611A3E4CF48;_hc.v=\"\\\"1bdad871-405e-46e3-97d6-46571ad48e14.1413897928\\\"\";_tr.s=Zy1Ca2OAe1ptv06o;JSESSIONID=891671FC6B450418DD6E0611A3E4CF48");
con.addRequestProperty("Referer","http://t.dianping.com/register");
con.setConnectTimeout(5000);
con.setRequestMethod("GET");
floatx=3.4f;
if(con.getResponseCode()==200){
InputStreaminputStr=con.getInputStream();
Stringinfo=newString(StreamTool.read(inputStr),"UTF-8");
Log.i(tag,Thread.currentThread().getName()+info);
if(info.contains("200"))
return"200";
}
}catch(MalformedURLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
//TODOAuto-generatedmethodstub
return"404";
}
}
处理返回值
ExecutorServiceexec=Executors.newCachedThreadPool();
ArrayList<Future<String>>results=newArrayList<Future<String>>();
for(inti=0;i<num;i++)
results.add(exec.submit(selectThread(telnumber)));
for(Future<String>fs:results)
try{
if(fs.get().equals("200"))
success++;
}catch(InterruptedExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(ExecutionExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
returnsuccess;
以上就是本文的全部内容,希望对大家的学习有所帮助。