首页 > 其他分享 >创建多线程方式3:实现Callable接口 改造下载图片案例

创建多线程方式3:实现Callable接口 改造下载图片案例

时间:2023-02-22 20:22:51浏览次数:40  
标签:name TestCallable 接口 Callable url jpg new 多线程 String

package com.Test;

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.concurrent.*;

//开启线程方式三:实现Callable接口
//实现Callable的好处
//可以抛出异常
//可以获取返回值

public class TestCallable implements Callable<Boolean> {

private String url;
private String name;
public TestCallable(String url,String name){
this.url=url;
this.name=name;
}

@Override
public Boolean call() {
WebDownLoader webDownLoader = new WebDownLoader();
webDownLoader.downloader(url,name);
System.out.println("下载了"+name);
return true;
}

public static void main(String[] args) throws ExecutionException, InterruptedException {
TestCallable thread1 = new TestCallable("https://www.kuangstudy.com/assert/course/c1/04.jpg","4.jpg");
TestCallable thread2 = new TestCallable("https://www.kuangstudy.com/assert/course/c1/05.jpg","5.jpg");
TestCallable thread3 = new TestCallable("https://www.kuangstudy.com/assert/course/c1/06.jpg","6.jpg");

// 创建执行服务
ExecutorService ser = Executors.newFixedThreadPool(3);
// 提交执行
Future<Boolean> r1 = ser.submit(thread1);
Future<Boolean> r2 = ser.submit(thread2);
Future<Boolean> r3 = ser.submit(thread3);
// 获取结果
boolean rs1 = r1.get();
boolean rs2 = r2.get();
boolean rs3 = r3.get();
// 关闭服务
ser.shutdownNow();
}

// 下载器
class WebDownLoader{
//下载方法
public void downloader(String url,String name){
try {
FileUtils.copyURLToFile(new URL(url), new File(name));
} catch (IOException e) {
e.printStackTrace();
System.out.println("下载器有问题,downloader方法有bug");
}
}
}
}

标签:name,TestCallable,接口,Callable,url,jpg,new,多线程,String
From: https://www.cnblogs.com/fc666/p/17145728.html

相关文章

  • Java多线程技能-方法介绍
    java多线程技能技术点:线程的启动如何使线程暂停如何使线程停止线程的优先级线程安全相关的问题方法currentThread()currentThread()方法可返回代码段正在被哪......
  • 多线程 龟兔赛跑案例
    packagecom.Java;publicclassRaceimplementsRunnable{//胜利者privatestaticStringwinner;@Overridepublicvoidrun(){for(inti=0......
  • java多线程:详解JUC
    对应狂神说JUC视频1.JUC是什么java.util下的几个包的简称涉及到多线程的开发java.util.concurrentjava.util.atomicjava.util.concurrent.locks2.线程和进程进程:多个程序......
  • 什么是接口测试?怎么做接口测试?
    今天我们就来浅聊一下什么是接口测试,接口测试又该如何进行呢?一、什么是接口测试?接口测试是一种常见的软件测试方法,用于测试软件系统中不同模块之间的接口。接口是指两个或多......
  • 接口测试和功能测试有什么不同?
    接口测试和功能测试是软件测试中的两种常见测试类型,主要用于评估软件系统的质量。尽管这两种测试都是为了评估软件系统的性能,但它们有很多不同之处。接口测试和功能测试的区......
  • Burp Suite+captcha-killer-modified,爆破带有验证码Web登录接口(保姆级教程)
    目录1需求描述2测试环境要求3配置测试环境3.1安装ddddocr+aiohttp3.2BurpSuite添加插件3.3启动图像识别接口4实战测试4.1获取验证码接口4.2获取请求包4.3插件配......
  • Java的多线程+Socket
    客户端: packagecom.wulala;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;importjava.net......
  • 什么是接口测试?怎么做接口测试?
    今天我们就来浅聊一下什么是接口测试,接口测试又该如何进行呢?一、什么是接口测试?接口测试是一种常见的软件测试方法,用于测试软件系统中不同模块之间的接口。接口是指两个......
  • Java 调接口类似postman用form-data方式post传输数据
    转自JavaHttpClient发送multipartform-data的Post请求  publicstaticStringgateway(Stringparam,Stringparamvalue,Stringservicename,Stringinterface_id......
  • OpenAI官方的GPT-3接口,chatgpt机器人免费体验版,秘钥APPKEY
    OpenAI官方的GPT-3接口,chatgpt机器人免费体验版,秘钥APPKEY。长按或扫一扫二维码,进入与chatGPT人工智能机器人对聊,注册用户后免费获得对话次数,也可以加客服免费获取秘钥App......