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

多线程处理事务,结果统一输出

阅读更多
package com.temp;

import java.util.HashMap;
import java.util.Map;

/**
 * 多个线程一起运行,结果统一输出
 * */
public class MultiThreads {
	private Map<String, String> resultMap = new HashMap<String, String>();
	private int processCount = 2;

	public static void main(String[] args) {
		long begin = System.currentTimeMillis();
		MultiThreads mt = new MultiThreads();
		new TaskThread(mt).start();
		new PlanThread(mt).start();

		int count = 0;
		while (!mt.isFinished()) {
			Thread.yield();
			count++;
		}

		for (String val : mt.resultMap.values()) {
			System.out.println(val);
		}
		
		System.out.println(System.currentTimeMillis() - begin);
		
		System.out.println(count);
	}

	public int getProcessCount() {
		return processCount;
	}

	public void put(String key, String value) {
		this.resultMap.put(key, value);
		this.processCount--;
	}

	public boolean isFinished() {
		return this.processCount <= 0;
	}
}

class TaskThread extends Thread {
	private MultiThreads result;

	public TaskThread(MultiThreads result) {
		this.result = result;
	}

	@Override
	public void run() {
		try {
			sleep(1000);
			this.result.put("task", "This is a task.");
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}

}

class PlanThread extends Thread {
	private MultiThreads result;

	public PlanThread(MultiThreads result) {
		this.result = result;
	}

	@Override
	public void run() {
		try {
			sleep(1000);
			this.result.put("plan", "This is a plan.");
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
}

 

此法适用于将一个大任务成为几个不相干的几块并行处理,提高效率。

分享到:
评论

相关推荐

    C#技术点总结.ppt

    它支持跨平台、安全、可靠和事务处理,是整合多种通信技术的统一平台。 - **运行机制**:WCF包含四个核心元素:服务契约定义服务提供的操作,数据契约规定数据格式,消息契约定义消息结构,而绑定则配置通信方式、...

    otl.zip_OTL_oracle_oracle OTL_sql server_数据库 otl

    9. **并发控制**:OTL支持多线程编程,可以在多线程环境中安全地访问数据库。 10. **易于集成**:OTL的API设计简洁,易于理解和使用,能够快速地与现有的C++项目整合。 OTL与Oracle数据库的结合,使得开发人员能够...

    sip性能优化.pdf

    在多线程环境中,合理的线程管理和同步机制至关重要。可以考虑使用锁、条件变量或其他并发控制策略来减少竞态条件和死锁,提高并发性能。 **6. 日志和调试优化** 在生产环境中,通常需要关闭或降低日志级别,以...

    Java-1premierfg (8).zip

    通过JDBC,Java应用程序可以执行SQL语句、处理结果集、管理事务等。常见的JDBC驱动包括MySQL Connector/J、Oracle JDBC驱动等。 【反射】 Java反射机制允许程序在运行时检查类的信息,如类名、方法、字段等,并能...

    软件工程四个常见系统的数据流图

    实时系统的数据流图强调及时性和准确性,可能涉及多线程处理和优先级调度。 - **决策支持系统**:帮助管理者分析和解决问题,如市场预测、风险评估。这类系统的数据流图通常包括数据获取、数据分析和结果展示等部分...

    Java高级教程课件 java数据库教程 JDBC教程 1-java-IO(1)(共47页).pptx

    Java高级教程涵盖了多个主题,包括Java的IO系统和数据库交互,特别是通过JDBC。Java的IO(输入/输出)框架...通过学习这些内容,开发者能够有效地处理数据输入输出,实现与数据库的高效交互,并构建多线程和网络应用。

    Perl.DBI手册中文翻译版.pdf

    DBI还支持多线程环境,并描述了在多线程情况下如何确保线程安全性。同时,文档也提到了信号处理和取消操作的相关事宜。 ### 简单示例 文档中可能包含了一些简单的使用示例,以帮助开发者快速入门和理解DBI的使用...

    PERL_DBI手册.pdf

    针对线程安全性,DBI手册提供了相应的指导,以保证在多线程环境下使用DBI的安全性。另外,手册还提供了调试信息的输出、警告和错误消息的处理方式,以及如何处理致命错误。这些内容对于使用Perl进行数据库开发和运维...

    XC-Programming-Guide

    XC语言支持多线程和多核操作,其编程结构可以被编译成短小的指令序列,避免了过度依赖库调用,确保了编程时不会出现死锁、竞态条件和内存违规等问题,使得编写、理解和调试程序更为容易。 在描述中提到的“Control,...

    ODBCAPI开发教程.pdf

    ODBC API包括一系列函数,如`SQLConnect`、`SQLDisconnect`、`SQLPrepare`、`SQLExecute`等,用于建立连接、执行SQL、处理结果等操作。 2.5 ODBC的其他功能 2.5.1 ODBC连接句柄的参数设置 通过设置连接属性,如`...

    基于索引节点的异步分布式日志系统实践.pdf

    多线程交易是联机交易的一种特殊形式,它将交易内容拆分成多个可并行的独立事务,每个事务新起一个独立子线程处理,处理完成后将结果汇总到主线程返回。这种交易方式可以大大提升交易处理的效率,但同时也对日志系统...

    Visual C++数据库开发典型模块与实例精讲code

    9. **多线程数据库访问**:在多线程应用中,需要注意线程安全问题。每个线程应拥有独立的数据库连接,避免并发访问冲突。 10. **数据库连接池**:在大型系统中,为了提高性能和减少资源消耗,可以采用数据库连接池...

    客户端管理服务器文件

    3. **多线程/异步处理**:由于服务器可能同时处理多个客户端的请求,因此需要了解多线程或异步处理机制,确保并发性能。 4. **错误处理**:在设计过程中,要考虑到网络异常、文件操作失败等情况,编写健壮的错误...

    一些与java相关的东西

    JDBC文档会详细解释如何建立数据库连接、执行SQL语句、处理结果集以及事务管理等。 至于"JavaWEB_PPT.rar",这可能是一个关于Java Web开发的PPT文件,涵盖了Servlet、JSP、过滤器、监听器等概念,这些都是构建Web...

    java 毕业设计论文

    5. **多线程**:Java提供对多线程的支持,可以创建Thread对象或实现Runnable接口,理解线程同步和互斥的概念,如synchronized关键字和wait/notify机制。 6. **网络编程**:Java的Socket编程用于客户端-服务器交互,...

    JAVA2核心技术第7版卷1part22-28

    本章讲解了JDBC驱动、连接数据库、执行SQL语句、处理结果集、事务管理和预编译语句。 ### 第28章:XML处理(XML Processing) XML是一种用于存储和交换数据的标记语言。本章介绍了DOM(Document Object Model)和...

    javase基础知识.pdf

    JavaSE提供了丰富的类库,包括基本的数据类型、控制结构、异常处理、输入/输出、网络编程、多线程和图形用户界面(GUI)等组件,使得开发者可以构建复杂的应用系统。 JavaSE的主要特点包括: 1. **跨平台性**:...

    Java支持库

    在Java SE API中,我们可以找到用于输入输出、网络通信、数据处理、图形用户界面(GUI)构建以及多线程编程等核心功能的类和接口。 Java支持库的静态版本,如"Java支持库200版静态版Javalibfne",意味着这个库是预...

    .NET(C#)通用类库源码

    - **线程和并发**: 包含多线程操作的辅助方法,如线程同步、锁机制和异步编程支持。 - **字符串处理**: 提供增强的字符串操作功能,如格式化、替换、截取等。 - **类型转换**: 提供方便的类型转换方法,简化强...

    东北大学 研究生高级Java语言试题2018

    - **避免不可重复读**:不可重复读是指在同一个事务中多次读取同一数据项,但结果不同,因为另一个事务已经修改了该数据。通过设置事务隔离级别为`REPEATABLE_READ`,可以防止不可重复读。 - **避免幻影读**:幻影读...

Global site tag (gtag.js) - Google Analytics