在网上看到一道网试题,手痒痒实现了一下,呵呵。
使用Java多线程实现下述算法:
输入:整数组成的m*n的矩阵A。(m=100000, n=10000)
输出:一个数列B,数列B中的每一项为矩阵A中对应列数字之和。
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> 1 package com.base.multithread;
2
3 import java.io.IOException;
4 import java.util.ArrayList;
5 import java.util.List;
6 import java.util.Scanner;
7
8 public class PrintMatrix {
9
10 public static volatile int count = 0;
11
12 class ComputeRunnable implements Runnable
13 {
14 private int[][] values = null;
15 private int[] results = null;
16 private int colIndex = 0;
17
18 public void init(int[][] values,int colIndex,int[] results)
19 {
20 this.values = values;
21 this.colIndex = colIndex;
22 this.results = results;
23
24 }
25
26 public void run() {
27 int sum = 0;
28 for(int i = 0 ;i < values.length;i++)
29 {
30 sum = sum + values[i][colIndex];
31 }
32 results[colIndex] = sum;
33 count++;
34 }
35
36 }
37 /**
38 * @param args
39 * @throws IOException
40 * @throws InterruptedException
41 */
42 public static void main(String[] args) throws IOException, InterruptedException {
43 int m = 0;
44 int n = 0;
45 PrintMatrix pm = new PrintMatrix();
46 System.out.print("Print input m(matrix row):");
47 Scanner scanner = new Scanner(System.in);
48 String srow = scanner.nextLine();
49 System.out.print("Print input n(matrix col):");
50 String scol = scanner.nextLine();
51 m = new Integer(srow).intValue();
52 n = new Integer(scol).intValue();
53 int[][] arrys = new int[m][n];
54 System.out.println("please input " + m +" * " + n +" matrix,each column with space split:");
55 List<String> lines = new ArrayList<String>();
56 int index = 0;
57 while(scanner.hasNextLine())
58 {
59 lines.add(scanner.nextLine());
60 index++;
61 if(index==m)
62 break;
63 }
64 //未检查输入正确性
65 for( int i = 0 ;i < m;i++)
66 {
67 String line = lines.get(i);
68 String[] lineArray = line.split(" ");
69 for( int j = 0 ;j < n;j++)
70 {
71 arrys[i][j] = new Integer(lineArray[j]).intValue();
72 }
73 }
74 int[] results = new int[n];
75 for( int i = 0;i < n ;i++)
76 {
77 ComputeRunnable r = pm.new ComputeRunnable();
78 r.init(arrys,i,results);
79 Thread t = new Thread(r);
80 t.start();
81 }
82 while(true)
83 {
84 if(count == n)
85 break;
86 }
87 for(int i = 0; i < n;i++)
88 System.out.println("|" + results[i] + "|");
89 }
90
91
92 }
93
分享到:
相关推荐
总之,Java多线程和异步调用是构建高效、响应迅速的应用程序的关键技术。通过合理利用这些工具和机制,开发者可以编写出能够充分利用多核处理器优势的代码,从而提高软件性能。在实际应用中,理解并熟练掌握这些概念...
本项目以"java多线程实现大批量数据导入源码"为题,旨在通过多线程策略将大量数据切分,并进行并行处理,以提高数据处理速度。 首先,我们需要理解Java中的线程机制。Java通过`Thread`类来创建和管理线程。每个线程...
Java多线程是Java编程语言中一个非常重要的概念,它允许开发者在一个程序中创建多个执行线程并行运行,以提高程序的执行效率和响应速度。在Java中,线程的生命周期包含五个基本状态,分别是新建状态(New)、就绪...
总的来说,通过Java多线程和队列数据结构,我们可以有效地模拟排队叫号系统。这种模拟有助于理解和实践并发编程,同时也为我们解决实际问题提供了思路。在这个过程中,我们学习了线程同步、队列操作以及如何在Java中...
总结,这个"java多线程应用实现示例"通过小球运动的模拟,深入浅出地展示了Java多线程的运用,包括线程创建、同步、通信和线程池管理等关键概念。学习这个示例有助于理解和掌握Java多线程编程,为实际项目开发中的...
本主题将深入探讨如何在Java多线程环境下实现进度条功能。 首先,理解Java多线程的基本概念至关重要。Java通过Thread类和Runnable接口来支持多线程。创建一个新线程通常有两种方式:继承Thread类并重写run()方法,...
java一些简单的多线程用法,适合初学者
Java多线程读大文件 java多线程写文件:多线程往队列中写入数据
本文将基于一个具体的Java多线程操作数据库的应用程序,深入探讨其背后的原理、实现细节以及潜在的挑战。 #### 核心知识点: 1. **多线程基础**:多线程是Java编程中的一个重要概念,允许程序同时执行多个任务。在...
java多线程实现TCP连接UDP聊天的聊天程序
适合初学者使用,Java多线程技术实现矩阵乘积计算
Java多线程是Java编程中的重要概念,尤其在如今的多核处理器环境下,理解并熟练掌握多线程技术对于提高程序性能和响应速度至关重要。本资料详细讲解了Java多线程的原理,并提供了丰富的实战代码,非常适合Java初学者...
Java多线程实现数据切割批量执行,实现限流操作。 java线程池Executors实现数据批量操作。 批量异步Executors处理数据,实现限流操作,QPS限流。 线程池调用第三方接口限流实现逻辑。 案例适合: 1.批量处理大数据。...
Java多线程是Java编程中的一个重要概念,它允许程序同时执行多个任务,提高了程序的效率和响应速度。在Java中,实现多线程有两种主要方式:继承Thread类和实现Runnable接口。 1. 继承Thread类: 当我们创建一个新...
在Java编程语言中,实现多线程文件传输是一种优化程序性能、提高系统资源...在提供的`java多线程文件传输`压缩包中,可能包含了实现这些概念的示例代码,通过分析和学习,可以更好地理解多线程文件传输的原理和实践。
Java多线程是Java编程中的重要概念,它允许程序同时执行多个任务,极大地提升了程序的效率和性能。在Java中,实现多线程有两种主要方式:通过实现Runnable接口或者继承Thread类。本案例将深入探讨Java多线程中的关键...
本实例将探讨如何利用Java实现一个具有进度条显示功能的多线程应用。进度条通常用于可视化地表示某个任务的完成程度,这对于长时间运行的操作如文件下载、上传或大型计算来说非常有用。 首先,我们要理解Java中的...
《JAVA多线程教学演示系统》是一篇深入探讨JAVA多线程编程的论文,它针对教育领域中的教学需求,提供了一种生动、直观的演示方式,帮助学生更好地理解和掌握多线程技术。这篇论文的核心内容可能包括以下几个方面: ...
在这个名为"java多线程小汽车运行程序"的项目中,我们可以看到一个利用Java实现的多线程应用程序,可能是模拟汽车运行或者交通系统的一个小型示例。 在Java中,创建线程主要有两种方式:继承`Thread`类和实现`...
### Java多线程分页查询知识点详解 #### 一、背景与需求分析 在实际的软件开发过程中,尤其是在处理大量数据时,如何高效地进行数据查询成为了一个关键问题。例如,在一个用户众多的社交平台上,当用户需要查看...