多线程下载请教:什么是单线程下载和多线程下载?????

多线程下载  时间:2021-07-19  阅读:()

请问什么叫单线程和多线程下载

个人理解 单线程的也就是程序执行时,所跑的程序路径(处理的东西)是连续顺序下来的,必须前面的处理好,后面的彩绘执行到。

多线程嘛,举个例子也就是说程序可以同时执行2个以上相同类似的操作,比如一些搜索代理或者群发email的多线程软件,由于操作一次需要网络的返回信息 花的时间比较长,而对cpu来说却是空闲的,如果是一个一个顺序执行,那么搜索几千个IP就会花上好久好久。

而如果用多线程就可以在等待期间 加入其他的搜索,然后等待,这样可以提高效率。

不过多线程和多进程公用一些资源时要考虑的问题好像也是一样的,,对于一些公共资源或者公共变量的访问和修改时要注意特别的, 需要一些锁定什么的,还有顺序问题的考虑。

比如写游戏,一开始想来,用多线程蛮好的, 一个敌人一个线程让他自己单独运行,可以增加灵活性和随机性还有速度会快些? 其实不然, 一方面线程多了 速度会变得很慢, 另一方面由于线程切换和执行的不确定性,会使结果变得乱七八糟,跳来跳去的感觉?,特别是一些碰撞判断时,会莫名其妙? (我没试过,以前听人说试过) 。

其实处理这些东西用一个流程下来顺次处理主角、敌人、碰撞判断、绘图,速度方面不会怎么慢,而且一些变量判断方面不会错位。

说了半天,也没具体说出些什么,不好意思。

如果你学过操作系统,应该用好理解一点,线程的同步问题呵呵。



啥是多线程和单线程下载?

迅雷默认是5线程下载的。

你把线程数量设为1,那么它就是单线程了。

所谓多线程的意思是把一个文件分为多部份同时下载。

这样便宜加速下载速度。

如何使用多线程连续下载?

???使用多线程连续下载的具体方法是:在“快车”程序窗口中,单击“工具”“选项”命令,打开“选项”窗口,在“下载设置”选项区中,单击“速度设置”链接,进入“速度设置”界面,在“任务数”选项区中,在“最多同时进行的任务数”右侧的数值框中输入10,如下图所示。

????单击“确定”按钮,即可使用多线程连续下载文件。

java 怎样实现多线程下载的

java多线程机制: 例子 1 public class Example1 { static Lefthand left;static Righthand right; public static void main(String args[]) { left=new Lefthand(); //创建两个线程。

right=new Righthand(); left.start(); right.start(); } } class Lefthand extends Thread { public void run() { for(int I=0;I<=5;I++) { System.out.println("I am a student"); try{sleep(500);} catch(InterruptedException e){} } } } class Righthand extends Thread { public void run() { for(int I=0;I<=5;I++) { System.out.println("I am oookkk"); try{sleep(300);} catch(InterruptedException e){} } } } 在上述例子中,我们在main主线程中创建了两个新的线程lefthand和righthand。

当lefthand调用start()开始运行时,类Lefthand中的run()将自动被执行。

我们来分析一下上面程序的输出结果。

Left线程首先开始执行,这时Lefthand类中的run方法开始执行,输出”I am a student”后,left主动“休息”500毫秒,让出了CPU。

这时正在排队等待CPU的right线程的run方法马上被执行,输出“I am ookk”,right在主动让出CPU300毫秒后又来排队等待CPU服务,这时right发现left还没有“醒来”,即没有来排队抢占CPU,因此left的run方法被执行,又输出“I am oookkk“… …。

程序的执行结果是: E:dd>java Example1 I am student I am oookkk I am oookkk I am student I am oookkk I am oookkk I am student I am oookkk I am student I am oookkk I am student I am student 2.实现Runnable接口 例子 2 import java.applet.*; import java.awt.*; public class Example2 extends java.applet.Applet implements Runnable { Thread circleThread; public void start() { if (circleThread==null) { circleThread=new Thread(this); circleThread.start(); } } public void run() { while(circleThread !=null) { repaint(); try{ circleThread.sleep(1000); } catch(InterruptedException e){} } } public void paint(Graphics g) { double i=Math.random(); if(i<0.5) g.setColor(Color.red); else g.setColor(Color.blue); g.fillOval(100,100,(int)(100*i),(int)(100*i)); } public void () { circleThread.yield(); circleThread=null; } } 在上述例子2中,我们在小程序这个主线程中用构造方法Thread(this)创建了一个新的线程。

This代表着小程序作为这个新的线程的目标对象,因此我们的小程序必须为这个新创建的线程实现Runnable接口,即小程序利用Runnable接口为其中创建的这个新线程提供run()方法,给出该线程的操作。

首先,在小程序的start()方法中构造了一个名为circleThread的线程并调用线程类的start()方法来启动这一线程,即在小程序的主线程中又开始了一个线程:circleThread。

下面的语句建立了一个新的线程: circlethread =new Thread(this); 其中this作为该线程的目标对象,它必须实现Runnable接口。

线程被启动以后,自动调用目标对象的run()方法,除非线程被停止。

在run()方法的第十一中,Applet重绘本身,然后睡眠1秒,同时要捕获异常事件并进行处理。

如果你离开这一页,程序将调用()方法,将线程置空。

当你返回时,又会创建一个新的线程。

在具体应用中,采用哪种方法来构造线程体要视具体情况而定。

通常,当一个新的线程已继承了另一个类,而想在该线程中创建一个新的线程时,就应该用第二种方法来构造,即实现Rennable接口。

需要理解的是,我们的小应用程序实际上是浏览器的一个线程,这个线程由浏览器启动执行,浏览器自动调用执行小程中的init()、start()方法等。

因此我们要创建一个新的线程最好把新线程的启动放在小程序的start()方法中。

下面的例子3是一个应用程序,这个应用程序在创建窗口的同时又创建了一个新的线程,该线程负责让窗口中的一个按钮改变它的大小。

例子 3 import java.awt.*; import java.awt.event.*; public class Example3 { public static void main(String args[]) { Mywin win=new Mywin(); win.pack(); } } class Mywin extends Frame implements Runnable { Button b=new Button("ok"); int x=5; Thread bird=null; Mywin() { setBounds(100,100,120,120); setLayout(new FlowLayout()); setVisible(true); add(b); b.setBackground(Color.green); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) {System.exit(0);} }); bird=new Thread(this); //创建一个新的线程,窗口做目标对象, //替线程bird实现接口Runnable。

bird.start(); //在创建窗口时又开始了线程dird. } public void run() { while(true) { x=x+1; if(x>100) x=5; b.setBounds(40,40,x,x); try{bird.sleep(200);} catch(InterruptedException e){} } } } 滚动字幕线程。

例子 4 import java.applet.*; import java.awt.*; public class Example4 extends java.applet.Applet implements Runnable { int x=0; Thread Scrollwords=null; public void init() { setBackground(Color.cyan); setForeground(Color.red); setFont(new Font("TimesRoman",Font.BOLD,18)); } public void start() { if(Scrollwords==null) { Scrollwords=new Thread(this); Scrollwords.start(); } } public void run() { while (Scrollwords!=null) { x=x+5; if(x>500) x=0; repaint(); try{Scrollwords.sleep(80);} catch(InterruptedException e){} } } public void paint(Graphics g) { g.drawString("欢 迎 使 用 字 典 ",x ,80); } public void () { Scrollwords.yield(); Scrollwords=null; } } 带滚动字幕的小字典。

例子 5 import java.applet.*; import java.awt.*; import java.awt.event.*; public class Example5 extends Applet implements ActionListener,Runnable { TextField text1,text2; int x=0; Thread Scrollwords=null; public void init() { setBackground(Color.cyan); setForeground(Color.red); setFont(new Font("TimesRoman",Font.BOLD,18)); text1=new TextField(10); text2=new TextField(10); add(new Label("输入一个英文单词:")); add(text1); add(new Label("汉语意思:")); add(text2); text1.addActionListener(this); } public void start() { if(Scrollwords==null) { Scrollwords=new Thread(this); Scrollwords.start(); } } public void run() { while (Scrollwords!=null) { x=x+5; if(x>500) x=0; repaint(); try{Scrollwords.sleep(80);} catch(InterruptedException e){} } } public void paint(Graphics g) { g.drawString("欢 迎 使 用 字 典 ",x ,120); } public void () { Scrollwords.yield(); Scrollwords=null; } public void actionPerformed(ActionEvent e) { if((e.getSource()==text1)&&(text1.getText().equals("boy"))) { text2.setText("男孩"); } else if((e.getSource()==text1)&&(text1.getText().equals("sun"))) { text2.setText("太阳"); } else { text2.setText("没有该单词"); } } } 下面是一个左手画圆右手画方的例子。

我们在主线程中创建了两个线程:left、right,其中一个负责画圆,另一个负责画方。

在这个例子中我们使用了容器类的方法getGraphics()来获取一个Graphics对象(可以理解为一个画笔)。

例子 6 (效果如图1所示) 图1 双线程绘画程序 import java.applet.*; import java.awt.*; import java.awt.event.*; public class Example6 extends Applet implements Runnable { Thread left,right; Graphics mypen; int x,y; public void init() { left=new Thread(this); right=new Thread(this); x=10; y=10; mypen=getGraphics(); } public void start() { left.start(); right.start(); } public void run() { while(true) if (Thread.currentThread()==left) { x=x+1; if(x>240) x=10; mypen.setColor(Color.blue); mypen.clearRect(10,10,300,100); mypen.drawRect(10+x,10,50,50); try{left.sleep(60);} catch(InterruptedException e){} } else if(Thread.currentThread()==right) { y=y+1; if(y>240) y=10; mypen.setColor(Color.red); mypen.clearRect(10,110,300,100); mypen.drawOval(10+y,110,50,50); try{right.sleep(60);} catch(InterruptedException e){} } } public void () { left=null; right=null; } }

怎样实现多线程下载?

什么是多线程? 多线程是为了使得多个线程并行的工作以完成多项任务,以提高系统的效率。

线程是在同一时间需要完成多项任务的时候被实现的。

使用线程的好处有以下几点: ·使用线程可以把占据长时间的程序中的任务放到后台去处理 ·用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度 ·程序的运行速度可能加快 ·在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较游泳了。

在这种情况下我们可以释放一些珍贵的资源如内存占用等等。

最关键的一点,多线程可以让同一个程序的不同部分并发执行

请教:什么是单线程下载和多线程下载?????

简单点讲吧,如果下载东西,你另存为下载,就是单程下载,如果用网际快车等软件,把东西分成五块同时下载,就叫五线程下载(就是多线程)。

当然,网际快车也可以单线程,即把东西设为一块下载。

将要下载的数据,划分为多个数据快后,按照一定的网络传输协议,通过单一的,唯一的信道或媒介,传输到你的机子(既:终端).就是单线程传输吧.所谓下载,也是数据传输的一种说法罢了.

Friendhosting 黑色星期五 VDS/VPS可享四五折优惠促销

Friendhosting商家在前面的篇幅中也又陆续介绍到,是一家保加利亚主机商,主要提供销售VPS和独立服务器出租业务,数据中心分布在:荷兰、保加利亚、立陶宛、捷克、乌克兰和美国洛杉矶等。这不近期黑色星期五活动,商家也有推出了黑五优惠,VPS全场一次性45折,虚拟主机4折,全球多机房可选,老用户续费可获9折加送1个月使用时长,VDS折后最低仅€14.53/年,有需要的可以看看。Friendhos...

俄罗斯vps主机推荐,怎么样俄罗斯vps俄罗斯vps速度怎么样?

俄罗斯vps速度怎么样?俄罗斯vps云主机节点是欧洲十大节点之一,地处俄罗斯首都莫斯科,网络带宽辐射周边欧洲大陆,10G专线连通德国法兰克福、法国巴黎、意大利米兰等,向外连接全球。俄罗斯vps云主机速度快吗、延迟多少?由于俄罗斯数据中心出口带宽充足,俄罗斯vps云主机到全球各地的延迟、速度相对来说都不错。今天,云服务器网(yuntue.com)小编介绍一下俄罗斯vps速度及俄罗斯vps主机推荐!俄...

Friendhosting四五折促销,VPS半年付7.5欧元起

Friendhosting发布了针对“系统管理日”(每年7月的最后一个星期五)的优惠活动,针对VPS主机提供55%的优惠(相当于四五折),支持1-6个月付款使用,首付折扣非永久,优惠后最低套餐首半年7.18欧元起。这是一家保加利亚主机商,成立于2009年4月,商家提供VDS和独立服务器租用等,数据中心目前可选美国洛杉矶、保加利亚、乌克兰、荷兰、拉脱维亚、捷克和波兰等8个地区机房。下面以最低套餐为例...

多线程下载为你推荐
软件开发的周期软件生命周期安卓系统软件删除安卓系统中如何删除无用程序?色中色luntancoreldraw x6怎么抠图换背景呼叫中心搭建如何建立适合自己的呼叫中心智能公共广播系统智能公共广播系统js-3301数码mp3编程器怎么使用做视频的免费软件求有哪种视频制作软件是全免费的啊?罗振宇2017跨年演讲“时间的朋友”跨年演讲办了多少场,分别是什么主题?如何修改手机ip安卓手机怎么改ip地址新浪短网址链接生成新浪微博怎么发图文带短连接连接到自己的网站?oa系统包含哪些模块OA系统一般包含哪些功能模块?
个人虚拟主机 域名出售 工信部域名备案系统 域名抢注工具 locvps linkcloud 512av 174.127.195.202 日志分析软件 国外免费全能空间 jsp空间 789电视 稳定免费空间 重庆双线服务器托管 美国独立日 沈阳主机托管 测速电信 稳定空间 免备案jsp空间 美国服务器 更多