多线程并发请求检测url是否可用,有一个可用停掉所有的线程实现Callable接受线程返回值
来源:互联网 发布:卖韩国女装的淘宝店 编辑:程序博客网 时间:2024/06/05 11:19
创建两个文件
第一个:TestCallable.java
package com.iba.cxx.web.controller.App;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.util.concurrent.Callable;/** * Created by wangzhi on 2017/12/13. */public class TestCallable implements Callable { private String oid; TestCallable(String oid) { this.oid = oid; } @Override public Object call() throws MalformedURLException { System.out.println("处理之前"+oid); //进行网络请求 URL realUrl = new URL(oid); // 打开和URL之间的连接 try { HttpURLConnection connection = (HttpURLConnection)realUrl.openConnection(); int responseCode = connection.getResponseCode(); if(responseCode==200){ System.out.println("正常请求"+oid); responseCode = 0; return "1"; }else { System.out.println("请求错误"+oid); return "2"; } } catch (Exception e) { System.out.println("异常"+oid); return "2"; } }}
第二个:testMain.java
private static Boolean hasValue = false;public static void main(String[] args) throws ExecutionException, InterruptedException { long lss = System.currentTimeMillis(); System.out.println(System.currentTimeMillis()+""); int count = 0; //创建一个线程池 ExecutorService pool = Executors.newFixedThreadPool(4); //创建两个有返回值的任务 Callable c1 = new TestCallable("http://www.souppu.com"); Callable c2 = new TestCallable("http://www.soauhu.com"); Callable c3 = new TestCallable("http://www.sqouhu.com"); Callable c4 = new TestCallable("http://www.baidu.com"); //执行任务并获取Future对象 Future f1 = pool.submit(c1); Future f2 = pool.submit(c2); Future f3 = pool.submit(c3); Future f4 = pool.submit(c4); //从Future对象上获取任务的返回值,并输出到控制台 System.out.println(">>>"+f1.get().toString()); System.out.println(">>>"+f2.get().toString()); if (f1.get().toString() == "1"||f2.get().toString() == "1"||f3.get().toString()=="1"||f4.get().toString()=="1"){ count++; hasValue = true; System.out.println(hasValue+" "+count); //关闭线程池 pool.shutdown(); } System.out.println("返回值"+hasValue); System.out.println(System.currentTimeMillis()-lss+"");}
阅读全文
0 0
- 多线程并发请求检测url是否可用,有一个可用停掉所有的线程实现Callable接受线程返回值
- Callable有返回值的线程
- java Callable有返回值的线程
- 有返回值的线程 -- Callable
- 检测url是否可用
- Callable、Future多线程 线程池处理有返回值
- Callable实现带有返回值的线程
- Callable实现线程返回值
- java 实现线程有返回值 Callable 接口
- 多线程基础学习三:有返回值的线程类Callable
- Future和Callable、FutureTask实现,带有返回值的线程请求
- Java多线程实用篇之实现Callable接口,处理带有返回值的线程!
- JQ检测(判断)一个链接(URL)是否有效(服务可用)
- Java线程:线程安全类和Callable与Future(有返回值的线程)
- 有返回值的多线程的实现:FutureTask+Callable
- Java多线程 -- 有返回值的线程
- JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没
- java线程:关于Callable和Future的简单使用:有返回值的线程
- python任意多个整数,并输出其中最大值 最小值以及它们的和
- springboot配置 java servlet的Filter过滤器
- 解决mysql查询,in条件参数为带逗号的字符串,查询结果错误
- 微信开发__入门
- Java中4种安全沙箱机制之class文件检验器
- 多线程并发请求检测url是否可用,有一个可用停掉所有的线程实现Callable接受线程返回值
- iOS 国际化(多语言)
- 关于机器访问自己内网IP的问题讨论
- 请不要做浮躁的人
- CIFAR10_input学习笔记
- 创建PDF模板,java添加内容、导出下载PDF
- 看完离编写高性能的JavaScript又近了一步
- C++中的STL中map用法详解
- Git和GitHub资料汇总