`
huangjun_mail
  • 浏览: 118831 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java多线程小实现

阅读更多

在网上看到一道网试题,手痒痒实现了一下,呵呵。

使用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         forint i = 0 ;i < m;i++)
66         {
67             String line = lines.get(i);
68             String[] lineArray = line.split(" ");
69             forint j = 0 ;j < n;j++)
70             {
71                 arrys[i][j] = new Integer(lineArray[j]).intValue();
72             }
73         }
74         int[] results = new int[n];
75         forint 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多线程实现大批量数据导入源码"为题,旨在通过多线程策略将大量数据切分,并进行并行处理,以提高数据处理速度。 首先,我们需要理解Java中的线程机制。Java通过`Thread`类来创建和管理线程。每个线程...

    Java多线程知识点总结

    Java多线程是Java编程语言中一个非常重要的概念,它允许开发者在一个程序中创建多个执行线程并行运行,以提高程序的执行效率和响应速度。在Java中,线程的生命周期包含五个基本状态,分别是新建状态(New)、就绪...

    java多线程模拟队列实现排队叫号

    总的来说,通过Java多线程和队列数据结构,我们可以有效地模拟排队叫号系统。这种模拟有助于理解和实践并发编程,同时也为我们解决实际问题提供了思路。在这个过程中,我们学习了线程同步、队列操作以及如何在Java中...

    java多线程应用实现示例

    总结,这个"java多线程应用实现示例"通过小球运动的模拟,深入浅出地展示了Java多线程的运用,包括线程创建、同步、通信和线程池管理等关键概念。学习这个示例有助于理解和掌握Java多线程编程,为实际项目开发中的...

    java多线程进度条

    本主题将深入探讨如何在Java多线程环境下实现进度条功能。 首先,理解Java多线程的基本概念至关重要。Java通过Thread类和Runnable接口来支持多线程。创建一个新线程通常有两种方式:继承Thread类并重写run()方法,...

    java多线程实现动画功能

    java一些简单的多线程用法,适合初学者

    java多线程读取文件

    Java多线程读大文件 java多线程写文件:多线程往队列中写入数据

    java 多线程操作数据库

    本文将基于一个具体的Java多线程操作数据库的应用程序,深入探讨其背后的原理、实现细节以及潜在的挑战。 #### 核心知识点: 1. **多线程基础**:多线程是Java编程中的一个重要概念,允许程序同时执行多个任务。在...

    java多线程实现TCP连接UDP聊天的聊天程序

    java多线程实现TCP连接UDP聊天的聊天程序

    Java多线程技术实现矩阵乘积计算

    适合初学者使用,Java多线程技术实现矩阵乘积计算

    java多线程的讲解和实战

    Java多线程是Java编程中的重要概念,尤其在如今的多核处理器环境下,理解并熟练掌握多线程技术对于提高程序性能和响应速度至关重要。本资料详细讲解了Java多线程的原理,并提供了丰富的实战代码,非常适合Java初学者...

    Java多线程Executors批量执行数据实现限流

    Java多线程实现数据切割批量执行,实现限流操作。 java线程池Executors实现数据批量操作。 批量异步Executors处理数据,实现限流操作,QPS限流。 线程池调用第三方接口限流实现逻辑。 案例适合: 1.批量处理大数据。...

    java多线程Demo

    Java多线程是Java编程中的一个重要概念,它允许程序同时执行多个任务,提高了程序的效率和响应速度。在Java中,实现多线程有两种主要方式:继承Thread类和实现Runnable接口。 1. 继承Thread类: 当我们创建一个新...

    java实现多线程文件传输

    在Java编程语言中,实现多线程文件传输是一种优化程序性能、提高系统资源...在提供的`java多线程文件传输`压缩包中,可能包含了实现这些概念的示例代码,通过分析和学习,可以更好地理解多线程文件传输的原理和实践。

    java多线程经典案例

    Java多线程是Java编程中的重要概念,它允许程序同时执行多个任务,极大地提升了程序的效率和性能。在Java中,实现多线程有两种主要方式:通过实现Runnable接口或者继承Thread类。本案例将深入探讨Java多线程中的关键...

    java多线程进度条实例

    本实例将探讨如何利用Java实现一个具有进度条显示功能的多线程应用。进度条通常用于可视化地表示某个任务的完成程度,这对于长时间运行的操作如文件下载、上传或大型计算来说非常有用。 首先,我们要理解Java中的...

    JAVAJAVA多线程教学演示系统论文

    《JAVA多线程教学演示系统》是一篇深入探讨JAVA多线程编程的论文,它针对教育领域中的教学需求,提供了一种生动、直观的演示方式,帮助学生更好地理解和掌握多线程技术。这篇论文的核心内容可能包括以下几个方面: ...

    java多线程小汽车运行程序

    在这个名为"java多线程小汽车运行程序"的项目中,我们可以看到一个利用Java实现的多线程应用程序,可能是模拟汽车运行或者交通系统的一个小型示例。 在Java中,创建线程主要有两种方式:继承`Thread`类和实现`...

    java多线程分页查询

    ### Java多线程分页查询知识点详解 #### 一、背景与需求分析 在实际的软件开发过程中,尤其是在处理大量数据时,如何高效地进行数据查询成为了一个关键问题。例如,在一个用户众多的社交平台上,当用户需要查看...

Global site tag (gtag.js) - Google Analytics