gpt4 book ai didi

java - 创建两个不同的线程

转载 作者:行者123 更新时间:2023-12-01 14:19:21 24 4
gpt4 key购买 nike

我是线程新手,我有一个问题。

我需要创建两个不同的线程。

在第一个线程中,我需要读取一个文件并将其复制到另一个文件中。

在第二个线程中,我需要按升序排列数字。

我有第一个线程信息的代码:

package java10;

import java.io.File;
import java.io.IOException;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileNotFoundException;

class FileCopy
{
public static void main(String[] args)
{
try
{
File fileIn = new File("C:/Users/dis_YO_boi/Documents/Abhishek.txt");
File fileOut = new File("C:/Users/dis_YO_boi/Documents/Mallela.txt");

FileInputStream streamIn = new FileInputStream(fileIn);
FileOutputStream streamOut = new FileOutputStream(fileOut);

int c;
while ((c = streamIn.read()) != -1)
{
streamOut.write(c);
}

streamIn.close();
streamOut.close();
}
catch (FileNotFoundException e)
{
System.out.println("FileCopy: " + e);
}
catch (IOException e)
{
System.out.println("FileCopy: " + e);
}
}
}

我有第二个线程信息的代码:

package java10;

public class Ascending {

public static void main(String[] args) {
int nums[]={-1,23,50,-100,34};
//print the values before ordering
for (int i=0;i<nums.length;i++)
System.out.println(nums[i]);

for(int i=0;i<nums.length-1;i++){
for(int j=i+1;j<nums.length;j++){
if(nums[i]>nums[j]){
int temp=nums[i];
nums[i]=nums[j];
nums[j]=temp;

}
}
}

System.out.println("___________________________");
for (int i=0;i<nums.length;i++)
System.out.println(nums[i]);
}
}

最佳答案

您错了,您需要扩展 Ascending 和 FileCopy 中的 Thread 类。

重写 run 方法并在那里执行您的操作。从第三个类或其中一个类实现一个 main 方法,该方法创建两个线程并在它们上调用 start() ,否则的话:

//Class FileCopy with a main method
package java10;

import java.io.File;
import java.io.IOException;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileNotFoundException;

class FileCopy extends Thread {

public static void main(String[] args){
FileCopy fileCopy = new FileCopy();
Ascending ascending = new Ascending();
fileCopy.start();
ascending.start();
ascending.join();
fileCopy.join();
}

@Override
public void run() {
try {

File fileIn = new File("C:/Users/dis_YO_boi/Documents/Abhishek.txt");
File fileOut = new File("C:/Users/dis_YO_boi/Documents/Mallela.txt");

FileInputStream streamIn = new FileInputStream(fileIn);
FileOutputStream streamOut = new FileOutputStream(fileOut);

int c;
while ((c = streamIn.read()) != -1)
{
streamOut.write(c);
}

streamIn.close();
streamOut.close();
}
catch (FileNotFoundException e)
{
System.out.println("FileCopy: " + e);
}
catch (IOException e)
{
System.out.println("FileCopy: " + e);
}
}
}

//Class Ascending

package java10;

public class Ascending extends Thread {
@Override
public void run(){
int nums[]={-1,23,50,-100,34};
//print the values before ordering
for (int i=0;i<nums.length;i++)
System.out.println(nums[i]);

for(int i=0;i<nums.length-1;i++){
for(int j=i+1;j<nums.length;j++){
if(nums[i]>nums[j]){
int temp=nums[i];
nums[i]=nums[j];
nums[j]=temp;

}
}
}

System.out.println("___________________________");
for (int i=0;i<nums.length;i++)
System.out.println(nums[i]);
}

}

关于java - 创建两个不同的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17757419/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com