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

java多线程(锁、线程池)

    博客分类:
  • j2se
 
阅读更多
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

public class Test {
	public static void main(String[] args) {
		// 
		MyCount myCount = new MyCount("1234505454545", 500000);
		//创建锁 
		Lock lock = new ReentrantLock();
		//创建线程池 
		ExecutorService pool = Executors.newCachedThreadPool();
		// 
		User u1 = new User("A", myCount, -5000, lock);
		User u2 = new User("B", myCount, 6000, lock);
		User u3 = new User("C", myCount, -7000, lock);
		User u4 = new User("A", myCount, 100000, lock);
		//在线程池中执行各个用户的操作 
		pool.execute(u1);
		pool.execute(u2);
		pool.execute(u3);
		pool.execute(u4);
		//关闭线程池 
		pool.shutdown();
	}
}

/** 
 *  
 */
class User implements Runnable {
	private String name; //用户名 

	private MyCount myCount; //账户

	private int iocash; //操作金额

	private Lock myLock; //锁 

	User(String name, MyCount myCount, int iocash, Lock myLock) {
		this.name = name;
		this.myCount = myCount;
		this.iocash = iocash;
		this.myLock = myLock;
	}

	public void run() {
		//获取锁 
		myLock.lock();
		//执行现金业务 
		System.out.println(name + "正在操作" + myCount + "账户,金额为" + iocash
				+ ",当前金额为" + myCount.getCash());
		myCount.setCash(myCount.getCash() + iocash);
		System.out.println(name + "操作" + myCount + "账户成功,金额为" + iocash
				+ ",当前金额为" + myCount.getCash());
		//释放锁,
		myLock.unlock();
	}
}

/** 
 * 
 */
class MyCount {
	private String oid; //账号 

	private int cash; //账户余额 

	MyCount(String oid, int cash) {
		this.oid = oid;
		this.cash = cash;
	}

	public String getOid() {
		return oid;
	}

	public void setOid(String oid) {
		this.oid = oid;
	}

	public int getCash() {
		return cash;
	}

	public void setCash(int cash) {
		this.cash = cash;
	}

	@Override
	public String toString() {
		return "MyCount{" + "oid='" + oid + '\'' + ", cash=" + cash + '}';
	}
}
分享到:
评论

相关推荐

    Java多线程+线程池.docx

    Java 多线程和线程池 Java 多线程是指在 Java 编程语言中,一个线程的动态执行过程。这个过程包括线程的创建、执行和销毁三个阶段。在 Java 中,创建线程有多种方式,包括通过实现 Runnable 接口、继承 Thread 类...

    C#Winform异步多线程和线程池集成的用法

    本文将深入探讨如何在Winform应用中使用异步多线程和线程池。 一、线程基础 线程是操作系统分配CPU时间的基本单元,每个进程至少包含一个线程。在C#中,可以使用`System.Threading.Thread`类来创建和管理线程。通过...

    多线程与线程池技术详解(图书配套)

    多线程与线程池是Java编程中至关重要的概念,特别是在处理高并发场景时,它们的作用尤为突出。本文将深入探讨这两个主题,并结合标签中的"排它锁"、"重入锁"、"共享锁"等概念进行讲解。 首先,线程是操作系统分配...

    JAVA线程、线程池资料----下载不扣分,回帖加1分,欢迎下载,童叟无欺

    在多线程大师Doug Lea的贡献下,在JDK1.5中加入了许多对并发特性的支持,例如:线程池。.......................................JAVA线程、线程池资料----下载不扣分,回帖加1分,欢迎下载,童叟无欺JAVA线程、...

    java多线程,对多线程,线程池进行封装,方便使用

    Java多线程是Java编程中的重要概念,它允许程序同时执行多个任务,提高了程序的效率和响应速度。在Java中,我们可以通过实现Runnable接口或继承Thread类来创建线程。然而,直接使用线程可能存在一些问题,如资源管理...

    java线程、线程池、xml解析入门

    在学习这些知识时,初学者可以通过创建简单的多线程程序来实践,比如实现一个生产者消费者模型,或者利用线程池处理并发请求。对于XML解析,可以尝试读取和解析配置文件,或者通过XML与Java对象之间的绑定进行数据...

    轻量级java多线程池demo

    本文将深入探讨一个轻量级的Java多线程池实现,这个实现允许线程间的通信,并提供了类似Akka Actor的调度功能。 首先,我们要理解Java中的线程池。线程池是一种线程使用模式,它维护一组可以重复使用的线程,避免了...

    java多线程查询数据库

    综上所述,"java多线程查询数据库"是一个涉及多线程技术、线程池管理、并发控制、分页查询等多个方面的复杂问题。通过理解和掌握这些知识点,我们可以有效地提高数据库操作的效率和系统的响应速度。

    Java中的线程与线程池.pptx

    在多线程环境下,可以实现并行和并发执行。并行是指多个独立的任务同时运行,而并发则是在同一时间段内交替执行多个任务,通常在单个CPU核心上实现。在具有共享资源的并发场景中,线程安全和同步变得至关重要,以...

    java基础知识多线程线程池讲解和练习

    Java多线程与线程池是Java编程中的核心概念,特别是在构建高性能、高并发的应用时不可或缺。本资源旨在深入解析这两个关键知识点,并提供实践练习,帮助开发者熟练掌握它们。 首先,我们要理解什么是Java多线程。在...

    java多线程分页查询

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

    JAVA使用线程池查询大批量数据

    除了`ThreadPoolExecutor`,Java还提供了`Executors`工具类,它提供了一些预设的线程池配置,如`newFixedThreadPool`(固定大小线程池)、`newSingleThreadExecutor`(单线程线程池)等,方便开发者快速创建线程池。...

    多线程与线程池技术详解

    在Java编程领域,多线程和线程池技术是核心且关键的概念,它们在现代的高性能、高并发应用中扮演着重要角色。多线程允许应用程序同时执行多个任务,而线程池则是一种管理和控制线程的有效手段,有助于提高系统的效率...

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

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

    Java、Android多线程、线程池Demo

    在Java和Android开发中,多线程和线程池是两个关键的概念,它们对于提高程序的执行效率和优化系统资源的使用至关重要。本教程将深入探讨这两个主题,并通过一个名为"ThreadPoolDemo"的示例代码来阐述其核心原理和...

    java_thread_cn.rar_Java 线程池_java thread books_java线程_线程池_线程池调度

    Java线程池是Java并发编程中的重要组成部分,它在多线程编程中扮演着至关重要的角色,有效地管理和调度了大量的并发任务。线程池通过预先创建并维护一组可重用线程,来提升程序的性能和效率,避免了频繁地创建和销毁...

    Java 多线程课程的代码及少量注释.zip

    Java 多线程主题1- Java 多线程启动线程2- Java 多线程Volatile – 基本线程通信3- Java 多线程同步4- Java 多线程锁对象5- Java 多线程线程池6- Java 多线程倒计时闩锁7- Java 多线程生产者-消费者8- Java 多线程...

    多线程(线程池)的相关研究资料

    在计算机科学领域,多线程和线程池是并发编程中的关键概念,它们极大地提高了程序的执行效率和系统资源的利用率。线程是操作系统分配CPU时间的基本单位,而线程池则是管理和调度线程的一种机制。 多线程是指在一个...

    java多线程实现大批量数据导入源码

    总的来说,本项目通过Java多线程技术,结合合理的数据切分和线程池管理,实现对大数据的高效批量处理。通过分析和优化这些关键点,我们可以根据实际情况调整参数,进一步提高数据导入导出的效率。

    java多线程详解,线程池原理,8种锁,java内存模型......

    首先希望大家喜欢我制作的文档,如果文档中有什么误解的地方,望告诉一下,5分是也不多,是系统默认的,那么就5分咯,java多线程详解,线程池原理,8种锁,java内存模型......

Global site tag (gtag.js) - Google Analytics