java线程的run()没有返回值怎么办?

 更新时间:2016年01月05日 10:15:19   作者:学习编程知识  
java线程的run()没有返回值怎么办?本文给出了java线程的run()返回值为空的解决办法,感兴趣的小伙伴们可以参考一下

用线程Thread执行一些方法后,需要判断执行是否成功。

public void run() {}

run( ) 方法返回值是空, 怎么办?

解决方法:

  • Note
  • 使用 call() 方法
  • Callable接口是 jdk 5 后新增的接口

代码:

package com.example.thread;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.Callable;

import android.util.Log;

import com.example.StreamTool.StreamTool;

public class MyThread1 implements Callable<String> {
  private static final String tag = "xxxyyy";
  private String phone;
  private String name;
  public MyThread1(String name, String phone) {

    this.name = name;
    this.phone = phone;
  } 

// public MyThread1(String name, String phone) {
//   super(name);
//   this.phone = phone;
//  } 

//  public void run() {
//   Log.i(tag, Thread.currentThread().getName() + "......start");
//   String newpath = "http://www.dianping.com/ajax/json/account/reg/mobile/send?m=" + phone + "&flow=t&callback=DP._JSONPRequest._5";
//   StringBuilder strBui = new StringBuilder(newpath);
//
//   try {
//     URL url = new URL(strBui.toString());
//     HttpURLConnection con = (HttpURLConnection) url.openConnection();
//     con.addRequestProperty("Content-Type", "text/html; charset=UTF-8");
//     con.addRequestProperty(
//             "User-Agent",
//             "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.104 Safari/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){
//       InputStream inputStr = con.getInputStream();
//       String info = new String(StreamTool.read(inputStr), "UTF-8");
//       Log.i(tag, Thread.currentThread().getName() + info);
//     }
//   } catch (MalformedURLException e) {
//     // TODO Auto-generated catch block
//     e.printStackTrace();
//   } catch (IOException e) {
//     // TODO Auto-generated catch block
//     e.printStackTrace();
//   } catch (Exception e) {
//     // TODO Auto-generated catch block
//     e.printStackTrace();
//   }
//   
//    
//  }

  @Override
  public String call() throws Exception {
      Log.i(tag, Thread.currentThread().getName() + "......start");
      String newpath = "http://www.dianping.com/ajax/json/account/reg/mobile/send?m=" + phone + "&flow=t&callback=DP._JSONPRequest._5";
      StringBuilder strBui = new StringBuilder(newpath);

      try {
        URL url = new URL(strBui.toString());
        HttpURLConnection con = (HttpURLConnection) url.openConnection();
        con.addRequestProperty("Content-Type", "text/html; charset=UTF-8");
        con.addRequestProperty(
                "User-Agent",
                "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.104 Safari/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");

        float x = 3.4f;
        if (con.getResponseCode() == 200){
          InputStream inputStr = con.getInputStream();
          String info = new String(StreamTool.read(inputStr), "UTF-8");
          Log.i(tag, Thread.currentThread().getName() + info);
          if(info.contains("200"))
            return "200";
        }
      } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }


    // TODO Auto-generated method stub
    return "404";
  } 


}

处理返回值

ExecutorService exec = Executors.newCachedThreadPool();
    ArrayList<Future<String>> results = new ArrayList<Future<String>>();
    for(int i = 0; i < num; i++)
      results.add(exec.submit(selectThread(telnumber)));
    for (Future<String> fs:results)
      try {
        if (fs.get().equals("200"))
          success++;
      } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      } catch (ExecutionException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
    return success;

以上就是本文的全部内容,希望对大家的学习有所帮助。

相关文章

  • 浅谈Spring refresh的工作流程

    浅谈Spring refresh的工作流程

    这篇文章主要介绍了浅谈Spring refresh的工作流程,refresh 是 AbstractApplicationContext 中的一个方法,负责初始化 ApplicationContext容器,让我们一起来学习一下吧
    2023-04-04
  • 关于Java中static关键字的用法

    关于Java中static关键字的用法

    这篇文章主要介绍了关于Java中static关键字的用法,static:意为静态的,在 Java 里面作为静态修饰符,可以理解为全局的意思,static 不仅可以修饰成员变量,成员方法,还可以修饰代码块,需要的朋友可以参考下
    2023-08-08
  • Spring mvc拦截器实现原理解析

    Spring mvc拦截器实现原理解析

    这篇文章主要介绍了Spring mvc拦截器实现原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • 解决HttpServletResponse和HttpServletRequest取值的2个坑

    解决HttpServletResponse和HttpServletRequest取值的2个坑

    这篇文章主要介绍了解决HttpServletResponse和HttpServletRequest取值的2个坑问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • 10分钟带你理解Java中的反射

    10分钟带你理解Java中的反射

    反射是java中一种强大的工具,能够使我们很方便的创建灵活的代码,这篇文章带大家十分钟快速理解Java中的反射,有需要的可以参考借鉴。
    2016-08-08
  • Hadoop之Mapreduce序列化

    Hadoop之Mapreduce序列化

    本文主要带我们了解Mapreduce序列化,序列化就是把内存中的对象,转换成字节序列(或其他数据传输协议)以便于存储到磁盘(持久化)和网络传输。想进一步了解更多的小伙伴,可以参考阅读本文
    2023-03-03
  • Java策略模式的简单应用实现方法

    Java策略模式的简单应用实现方法

    这篇文章主要介绍了Java策略模式的简单应用实现方法,需要的朋友可以参考下
    2014-02-02
  • java设计模式之组合模式(Composite)

    java设计模式之组合模式(Composite)

    这篇文章主要为大家详细介绍了java设计模式之组合模式Composite,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • SpringBoot结合Tess4J实现拍图识字的示例代码

    SpringBoot结合Tess4J实现拍图识字的示例代码

    图片中的文字提取已经越来越多地应用于数据输入和自动化处理过程,本文主要介绍了SpringBoot结合Tess4J实现拍图识字的示例代码,具有一定的参考价值,感兴趣的可以了解一下
    2024-06-06
  • 通过代码实例解析JAVA类生命周期

    通过代码实例解析JAVA类生命周期

    这篇文章主要介绍了通过代码实例解析JAVA类生命周期,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08

最新评论