1.Win10系统如何用Robocopy多线程功能加快文件复制?
如果你要将Win10中的大量文件和文件夹复制到另一个驱动器,可以仿照如下步骤来实现 Robocopy 多线程功能以达到超快的数据复制速度: 1、以管理员权限打开「命令提示符」 2、执行类似如下命令进行多线程复制:Robocopy C:\source\folder\path\ D:\destination\folder\path\ /S /ZB /R:5 /W:5 /V /MT:32例如:Robocopy D:\Pictures\桌面主题 E:\桌面主题 /S /ZB /R:5 /W:5 /V /MT:32注意:请自行将源路径和目标路径替换成你自己的。
Robocopy命令行用法解释:Robocopy 的功能非常强大,因此其命令行开关也非常之多,下面我们只列出能够可靠、快速复制文件的常用开关。/S 复制子目录,但不复制空的子目录。
/E 复制子目录,包括空的子目录。/Z 在可重新启动模式下复制文件。
/ZB 使用可重新启动模式;如果拒绝访问,请使用备份模式。/R:5 失败副本的重试次数: 默认为 1 百万。
/W:5 两次重试间的等待时间: 默认为 30 秒。/TBD 等待定义共享名称(重试错误 67)。
/NP 无进度 不显示已复制的百分比。 /V 生成详细输出,同时显示跳过的文件。
/MT:32 使用 n 个线程进行多线程复制(默认值为 8)。必须至少为 1,但不得大于 128。
上述命令中最为重要的开关就是 /MT,它让 Robocopy 能够以多线程模式进行复制传输。如果你没为 /MT设置数字,那么默认数字是 8,这意味着Robocopy将会同时复制 8 个文件。
推荐使用 32 个线程,虽然可开的线程可以更多,但数字越大,所使用的系统资源和带宽就越多。
2.SWT中处理多线程使用方法是什么?
在Eclipse中,SWT是最重要的基石之一,负责了跨平台的本地界面显示,使Java也能够编写与系统相同的界面元素。
在SWT中处理多线程也是其重要技术的表现。 SWT有两个使用方法,分别是asyncExec和syncExec,前者是 异步执行与界面有关的操作,后者反之。
为什么要这么做?由于SWT单独有一个线程(主线程)处理界面显示,数据显示等,如果要在其他线程中操作界面元素, 就必须使用上述两个方法执行,即将另外线程的操作交给主线程处理。 而SWT的多线程远没有这么简单。
一般情况下,在SWT中运行线程时,其主线程不能阻塞,也能响应用户请求,比如鼠标和菜单等。 在这种情况下,需要新建Thread来处理逻辑,在这个Thread中,必须使用上面的两个方法处理界面数据。
以下是一个简单的例子,启动10个线程,在5秒的时间内,刷新列表中各行的字符串,在这个过程中,主界面依然能够响应鼠标请求。代码有点“圆环套圆环”的感觉。
import org。eclipse。
swt。SWT; import org。
eclipse。swt。
custom。BusyIndicator; import org。
eclipse。swt。
events。SelectionAdapter; import org。
eclipse。swt。
events。SelectionEvent; import org。
eclipse。swt。
layout。GridData; import org。
eclipse。swt。
layout。GridLayout; import org。
eclipse。swt。
widgets。Button; import org。
eclipse。swt。
widgets。Display; import org。
eclipse。swt。
widgets。List; import org。
eclipse。 swt。
widgets。Shell; /** * @author tenyears。
cn */ public class SWTThread { private int size = 10; // 10 threads private long runTime = 5000; // 5 seconds private List list; private Shell shell; public void startThread() { for (int index = 0; index getDisplay(); final Runnable runOne = new Runnable() { public void run() { final long start = System。currentTimeMillis(); while ((System。
currentTimeMillis() - start) 全部。
3.Java怎么实现多线程
1。
虚假的多线程 例1: public class TestThread { int i=0, j=0; public void go(int flag){ while(true){ try{ Thread。sleep(100); } catch(InterruptedException e){ System。
out。println("Interrupted"); } if(flag==0) i++; System。
out。println("i=" + i); } else{ j++; System。
out。println("j=" + j); } } } public static void main(String[] args){ new TestThread()。
go(0); new TestThread()。go (1); }} 上面程序的运行结果为: i=1 i=2 i=3 。
结果将一直打印出I的值。我们的意图是当在while循环中调用sleep()时,另一个线程就将起动,打印出j的值,但结果却并不是这样。
关于sleep()为什么不会出现我们预想的结果,在下面将讲到。 2。
实现多线程 通过继承class Thread或实现Runnable接口,我们可以实现多线程 2。1 通过继承class Thread实现多线程 class Thread中有两个最重要的函数run()和start()。
1) run()函数必须进行覆写,把要在多个线程中并行处理的代码放到这个函数中。 2) 虽然run()函数实现了多个线程的并行处理,但我们不能直接调用run()函数,而是通过调用start()函数来调用run()函数。
在调用start()的时候,start()函数会首先进行与多线程相关的初始化(这也是为什么不能直接调用run()函数的原因),然后再调用run()函数。 例2: public class TestThread extends Thread{ private static int threadCount = 0; private int threadNum = ++threadCount; private int i = 5; public void run(){ while(true){ try{ Thread。
sleep(100); } catch(InterruptedException e){ System。out。
println("Interrupted"); } System。out。
println("Thread " + threadNum + " = " + i); if(--i==0) return; } } public static void main(String[] args){ for(int i=0; i start(); }} 运行结果为: Thread 1 = 5 Thread 2 = 5 Thread 3 = 5 Thread 4 = 5 Thread 5 = 5 Thread 1 = 4 Thread 2 = 4 Thread 3 = 4 Thread 4 = 4 Thread 1 = 3 Thread 2 = 3 Thread 5 = 4 Thread 3 = 3 Thread 4 = 3 Thread 1 = 2 Thread 2 = 2 Thread 5 = 3 Thread 3 = 2 Thread 4 = 2 Thread 1 = 1 Thread 2 = 1 Thread 5 = 2 Thread 3 = 1 Thread 4 = 1 Thread 5 = 1 从结果可见,例2能实现多线程的并行处理。
4.windows 如何查看线程数量
一、利用设备管理器
1、右键单击Win10开始按钮,点击菜单中的“设备管理器”。
2、在Widows10设备管理器窗口,点开处理器项目,我们就能查看CPU线程数了。
二、利用任务管理器
1、Win10任务栏空白处单击鼠标右键,菜单中点击选择“任务管理器”。
2、在任务管理器窗口切换至“性能”,对着CPU利用率图形界面,单击鼠标右键,鼠标指向菜单中的“将图形更改为”,点击选择次级菜单中的“逻辑处理器”。
3、随后出现几个图形,就是几个线程。
转载请注明出处windows之家 » win10显示多线程