能否用inputstreamreader实现多线程数据读取

avatar
作者
筋斗云
阅读量:0

是的,可以使用InputStreamReader结合多线程来实现数据读取。这里是一个简单的示例,展示了如何使用两个线程分别从不同的输入流中读取数据:

import java.io.*; import java.util.concurrent.*;  public class MultiThreadedStreamReader {     public static void main(String[] args) throws IOException, InterruptedException {         // 创建两个输入流         InputStream inputStream1 = new FileInputStream("input1.txt");         InputStream inputStream2 = new FileInputStream("input2.txt");          // 使用InputStreamReader将输入流转换为字符流         InputStreamReader inputStreamReader1 = new InputStreamReader(inputStream1);         InputStreamReader inputStreamReader2 = new InputStreamReader(inputStream2);          // 创建线程任务         Callable<String> task1 = () -> readFromStream(inputStreamReader1);         Callable<String> task2 = () -> readFromStream(inputStreamReader2);          // 使用ExecutorService执行线程任务         ExecutorService executorService = Executors.newFixedThreadPool(2);         Future<String> result1 = executorService.submit(task1);         Future<String> result2 = executorService.submit(task2);          // 获取线程任务的结果并输出         System.out.println("Result from thread 1: " + result1.get());         System.out.println("Result from thread 2: " + result2.get());          // 关闭资源         executorService.shutdown();         inputStreamReader1.close();         inputStreamReader2.close();         inputStream1.close();         inputStream2.close();     }      private static String readFromStream(InputStreamReader inputStreamReader) throws IOException {         StringBuilder result = new StringBuilder();         int character;         while ((character = inputStreamReader.read()) != -1) {             result.append((char) character);         }         return result.toString();     } } 

在这个示例中,我们创建了两个输入流inputStream1inputStream2,分别读取两个不同的文件。然后,我们使用InputStreamReader将输入流转换为字符流。接下来,我们创建了两个线程任务task1task2,分别调用readFromStream方法从输入流中读取数据。最后,我们使用ExecutorService执行线程任务,并获取结果输出。

请注意,这个示例仅用于演示目的。在实际应用中,您可能需要根据具体需求对代码进行调整。例如,您可以使用缓冲流(如BufferedReader)来提高读取性能,或者根据需要调整线程池的大小。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!