使用继承Thread类和实现Runnable接口两种方式实现多线程。要求: (1)定义一个名为“CopyFile”的类,该类继承Thread类,并重写Thread类的run()方法,其功能是使用字节缓冲输入输出流复制文件。 (2)使用CopyFile类产生4个线程对象,并启动这4个线程对象,即同时复制4个文件。
时间: 2024-02-05 11:11:06 浏览: 79
下面是使用继承Thread类的方式实现多线程的示例代码:
```java
import java.io.*;
public class CopyFile extends Thread {
private String sourceFile;
private String destinationFile;
public CopyFile(String sourceFile, String destinationFile) {
this.sourceFile = sourceFile;
this.destinationFile = destinationFile;
}
public void run() {
try (BufferedInputStream in = new BufferedInputStream(new FileInputStream(sourceFile));
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(destinationFile))) {
byte[] buffer = new byte[1024];
int length;
while ((length = in.read(buffer)) > 0) {
out.write(buffer, 0, length);
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
String[] sourceFiles = {"file1.txt", "file2.txt", "file3.txt", "file4.txt"};
String[] destinationFiles = {"file1_copy.txt", "file2_copy.txt", "file3_copy.txt", "file4_copy.txt"};
CopyFile[] threads = new CopyFile[4];
for (int i = 0; i < 4; i++) {
threads[i] = new CopyFile(sourceFiles[i], destinationFiles[i]);
threads[i].start();
}
for (int i = 0; i < 4; i++) {
try {
threads[i].join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("All files have been copied.");
}
}
```
上面的代码中,我们定义了一个名为CopyFile的类,它继承自Thread类,并重写了Thread类的run()方法。在run()方法中,我们使用字节缓冲输入输出流来复制文件。
在main()方法中,我们创建了4个CopyFile对象,并启动这4个线程。在启动线程之后,我们使用join()方法来等待这4个线程都执行完毕,然后输出一条消息表示所有文件都已经被复制。
需要注意的是,由于我们在CopyFile类的构造函数中传入了源文件名和目标文件名,因此每个线程会复制不同的文件。如果要复制相同的文件,可以在main()方法中传入相同的文件名。
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![application/pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![java](https://img-home.csdnimg.cn/images/20250102104920.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![java](https://img-home.csdnimg.cn/images/20250102104920.png)
![application/x-zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)