线程-跪求哪位大神讲解一下main方法中new Thread中传入的lambda是什么?

问题描述

跪求哪位大神讲解一下main方法中new Thread中传入的lambda是什么?
我是个新手,刚刚在树上看到了这个程序,DownUtil中有private的内部类继承了thread类,对于main方法中的thread()怎么调用的不太懂,求耐心看看,大神能够解答一下;

import java.io.*;
import java.net.*;

public class DownUtil {
private String path;
private String targetFile;
private int threadNum;
private DownThread[] threads;
private int fileSize;

public DownUtil(String path String targetFile int threadNum) {    this.path = path;    this.threadNum = threadNum;    this.targetFile = targetFile;    threads = new DownThread[threadNum];}public void download() throws Exception {    URL url = new URL(path);    HttpURLConnection conn = (HttpURLConnection)url.openConnection();    conn.setConnectTimeout(5 * 1000);    conn.setRequestMethod(""GET"");    conn.setRequestProperty(""Accept""image/gif image/jpeg image/pjpeg image/pjpeg + application/x-shockwave-flash application/xaml+xml + ""application/vnd.ms-xpsdocument application/x-ms-xbap + application/x-ms-application application/vnd.ms-excel + ""application/vnd.ms-powerpoint application/msword */*"");    conn.setRequestProperty(""Aceept-Language""zh-CN"");    conn.setRequestProperty(""Charset""UTF-8"");    conn.setRequestProperty(""Connection""Keep-Alive"");    fileSize = conn.getContentLength();    conn.disconnect();    int currentPartSize = fileSize / threadNum + 1;    RandomAccessFile file = new RandomAccessFile(targetFilerw"");    file.setLength(fileSize);    file.close();    for(int i=0; i<threadNum; i++) {        int startPos = i * currentPartSize;        RandomAccessFile currentPart = new RandomAccessFile(targetFilerw"");        currentPart.seek(startPos);        threads[i] = new DownThread(startPos currentPartSize currentPart);        threads[i].start();    }}public double getCompleteRate() {    int sumSize = 0;    for(int i=0; i<threadNum; i++) {        sumSize += threads[i].length;    }    return sumSize * 1.0 / fileSize;}private class DownThread extends Thread {    private int startPos;    private int currentPartSize;    private RandomAccessFile currentPart;    public int length;    public DownThread(int startPos int currentPartSize RandomAccessFile currentPart) {        this.startPos = startPos;        this.currentPartSize = currentPartSize;        this.currentPart = currentPart;    }    public void run() {        try {            URL url = new URL(path);            HttpURLConnection conn = (HttpURLConnection)url.openConnection();            conn.setConnectTimeout(5 * 1000);            conn.setRequestMethod(""GET"");            conn.setRequestProperty(""Accept""image/gif image/jpeg image/pjpeg image/pjpeg + application/x-shockwave-flash application/xaml+xml + ""application/vnd.ms-xpsdocument application/x-ms-xbap + application/x-ms-application application/vnd.ms-excel + ""application/vnd.ms-powerpoint application/msword */*"");            conn.setRequestProperty(""Accept-Language""zh-CN"");            conn.setRequestProperty(""Charset""UTF-8"");            InputStream inStream = conn.getInputStream();            inStream.skip(this.startPos);            byte[] buffer = new byte[1024];            int hasRead = 0;            while(length < currentPartSize && (hasRead = inStream.read(buffer)) != -1) {                currentPart.write(buffer 0 hasRead);                length += hasRead;            }            currentPart.close();            inStream.close();        } catch (Exception e) {            e.printStackTrace();        }    }   }

}

public class MultiThreadDown {
public static void mian(String[] args) throws Exception {
final DownUtil downUtil = new DownUtil(""http://www.wmpic.me/61188/1458367711_GpOvzHwr.jpg""ios.png"" 4);
downUtil.download();

    new Thread(() -> {        while(downUtil.getCompleteRate() < 1) {            System.out.println(""已完成:"" + downUtil.getConpleteRate());            try {                Thread.sleep(1000);            } catch(Exception e) {}            }        }).start();}   

}

解决方案

这是Java8中的Lambda表达式相当于实现了一个Runneable接口的内部类通过Thread的start来调用这个内部类.

时间: 2024-11-03 02:01:37

线程-跪求哪位大神讲解一下main方法中new Thread中传入的lambda是什么?的相关文章

java求哪位大神帮看看,分割可以,粘合不行!

问题描述 java求哪位大神帮看看,分割可以,粘合不行! import java.util.*;import java.io.*;class SplitDemo { public static void main(String[] args) throws IOException { //File file=new File(""D:我想念你.mp3""); File dir=new File(""D:splitfiles""

tomcat-MyEclipse和Tomcat的问题 求哪位大神帮忙指教一下拜托拜托急急急

问题描述 MyEclipse和Tomcat的问题 求哪位大神帮忙指教一下拜托拜托急急急 这是Action包里的 package com.bus.cnu.action; import com.carver.ptm.core.persistence.base.BaseDao; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionConte

证书-微信支付接口的,求哪位大神帮忙下

问题描述 微信支付接口的,求哪位大神帮忙下 现在在做一个手机站放到微信上,购物车订单功能能都做好了现在要做微信支付,以前没做过,微信支付接口到时是要放什么证书么 ,还是跟支付宝那种一样接口做好就可以直接用.我是用asp.net做的

opencv 配准-如何用opencv实现下面的配准?求哪位大神给指导。

问题描述 如何用opencv实现下面的配准?求哪位大神给指导. 解决方案 http://download.csdn.net/download/wdd3690147/3455469http://download.csdn.net/detail/ker1030/1794711 解决方案二: http://www.pudn.com/downloads595/sourcecode/graph/texture_mapping/detail2430603.html 解决方案三: 特征检测sift之后怎么处理

tomcat-启动项目出现问题,求哪位大神指点下。。

问题描述 启动项目出现问题,求哪位大神指点下.. tomcat7部署出现"严重: Unable to process Jar entry [com/ibm/icu/impl/data/LocaleElements_zh__PINYIN.class] from Jar [jar:file:/D:/Program/tomcat7/webapps/jcpa/WEB-INF/lib/icu4j-2.6.1.jar!/] for annotationsorg.apache.tomcat.util.bcel

web service-webservice报错问题,求哪位大神解决

问题描述 webservice报错问题,求哪位大神解决 报这个错误(Exception in thread "main" javax.xml.ws.WebServiceException: Provider com.sun.xml.ws.spi.ProviderImpl not found)该如何解决? 解决方案 webservice文件读写报错问题关于windows 2008 server R2 文件共享问题,求大神帮忙解决一下!

图片-急求,各位大神帮帮忙,代码能在MYeclipse中运行就好

问题描述 急求,各位大神帮帮忙,代码能在MYeclipse中运行就好 30C 解决方案 作业布置好了,那你就赶快答呗.1块5毛钱找人帮你写程序估计有点困难.姐姐买个茶鸡蛋都要1块5啦. 解决方案二: 我要点积分,楼主的分能给我一些么?下载不了 解决方案三: 谁帮你就是害你,养成这样的习惯,以后还怎么混啊 解决方案四: 可以用jsp和数据库开发,查下手册. 解决方案五: 这分分钟的事情.在学校要好好学习. 解决方案六: 还是没有提具体要求 解决方案七: 都讲得这么明显了,你可以根据ASCII去查看

web应用自动化测试遇到了验证码,实在解决不了了,求哪位大神帮助

问题描述 如图所示.用户名和密码输入都已经解决,就是验证码这块不会了,网上查了很多资料还是没有头绪,想用万能验证码,可是资料太少了,OCR根本不懂.其实想先用VS调用识别软件先识别出验证码,然后再读取进来,可是不会写这样的代码.哪位大神可以帮帮小弟解决这个瓶颈,小弟不胜感激! 解决方案 解决方案二:自动化测试--都是自己人,对于这个还需要找别人帮忙?直接让开发将验证注册码部分取消掉,随便输入就可以了啊解决方案三:要是自己人就好了...我在做毕业设计....遇到瓶颈了解决方案四:引用1楼starf

跪求哪位大神能介绍下OSMPlayer,急用啊!!!!!!!!!!!!

问题描述 请问哪位大神能给个关于OSMPlayerWeb播放器的说明,附加一个Demo,越全面越好!OSMPlayer中有哪些重要属性啊?它支持哪些视频文件格式?我该怎么实现让它的进度条被禁用呢????高分送上啊!!!!! 解决方案 解决方案二:这个去官网参考啊.这里提供你自己链接:和解决方案三:引用1楼lizhi3186575的回复: 这个去官网参考啊.这里提供你自己链接:和 都没有详细的实例,不晓得怎么搞,哎!我想做的是用HTML5来实现会话式交互视频效果,烦啊,还有几天就要交作品了,急死了