java 线程 代码_一个简单的java线程代码

一个简单的java线程代码。 其实线程也就那么回事, package thead; public class testThead2 {     /**      * @param args      */     public static void main(String[] args) {         // TODO Auto-generated method stub         thead1 t1 = new thead1();         thead2 t2 = new thead2();         new Thread(t1).start();         new Thread(t2).start();     } } class thead1 implements Runnable {     thead1() {     }     public void run() {         // TODO Auto-generated method stub         for (int i = 0; i < 50; i++) {             if (i % 2 == 0)                 System.out.println("hello, i am the first thead  " + i);         }     } } class thead2 implements Runnable {     thead2() {     }     public void run() {         // TODO Auto-generated method stub         for (int i = 0; i < 50; i++) {             if (i % 2 == 1)                 System.out.println("hi , i am the second thead   "  + i);         }     } }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一段Java代码实现多线程下载: ```java import java.io.InputStream; import java.io.RandomAccessFile; import java.net.HttpURLConnection; import java.net.URL; public class MultiThreadDownload extends Thread { private String url; // 文件下载地址 private String filePath; // 保存路径 private int threadNum; // 线程数量 public MultiThreadDownload(String url, String filePath, int threadNum) { this.url = url; this.filePath = filePath; this.threadNum = threadNum; } @Override public void run() { try { URL downloadUrl = new URL(url); HttpURLConnection httpURLConnection = (HttpURLConnection) downloadUrl.openConnection(); httpURLConnection.setRequestMethod("GET"); httpURLConnection.setConnectTimeout(5000); int fileLength = httpURLConnection.getContentLength(); int blockSize = fileLength % threadNum == 0 ? fileLength / threadNum : fileLength / threadNum + 1; RandomAccessFile randomAccessFile = new RandomAccessFile(filePath, "rw"); randomAccessFile.setLength(fileLength); randomAccessFile.close(); for (int i = 0; i < threadNum; i++) { int startIndex = i * blockSize; int endIndex = (i + 1) * blockSize - 1; if (endIndex > fileLength) endIndex = fileLength; new DownloadThread(url, filePath, startIndex, endIndex).start(); } } catch (Exception e) { e.printStackTrace(); } } private class DownloadThread extends Thread { private String url; private String filePath; private int startIndex; private int endIndex; public DownloadThread(String url, String filePath, int startIndex, int endIndex) { this.url = url; this.filePath = filePath; this.startIndex = startIndex; this.endIndex = endIndex; } @Override public void run() { try { RandomAccessFile randomAccessFile = new RandomAccessFile(filePath, "rw"); randomAccessFile.seek(startIndex); URL downloadUrl = new URL(url); HttpURLConnection httpURLConnection = (HttpURLConnection) downloadUrl.openConnection(); httpURLConnection.setRequestMethod("GET"); httpURLConnection.setConnectTimeout(5000); httpURLConnection.setRequestProperty("Range", "bytes=" + startIndex + "-" + endIndex); InputStream inputStream = httpURLConnection.getInputStream(); byte[] buffer = new byte[1024]; int length = -1; while ((length = inputStream.read(buffer)) != -1) { randomAccessFile.write(buffer, 0, length); } inputStream.close(); randomAccessFile.close(); } catch (Exception e) { e.printStackTrace(); } } } } ``` 这段代码利用多线程实现文件下载,具体实现过程为:首先获取文件长度,然后根据线程数量计算每个线程需要下载的文件块大小,接着创建多个下载线程,每个下载线程负责下载自己对应的文件块。在下载时,通过设置请求头中的 `Range` 参数实现分块下载,最终将所有分块拼接起来得到完整的文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值