`
san_yun
  • 浏览: 2661846 次
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

java多线程学习

 
阅读更多
CyclicBarrier

在java多线程中,很多时候需要相互等到别的线程做了某见事情,其他线程才能进入下一步,一种方式是通过wait(),和notifyall的方式,但还有比这种更好的方式吗?
这就要靠java.util.concurrent包中的CyclicBarrier类了。它是一个同步辅助类,它允许一组线程(任务)互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程(任务)的程序中,这些线程(任务)必须不时地互相等待,此时 CyclicBarrier 很有用。简单的概括其适应场景就是:当一组线程(任务)并发的执行一件工作的时候,必须等待所有的线程(任务)都完成时才能进行下一个步骤。

BlockingQueue

LockSupport




在这里,我汇总一下解决并发的常见问题和对应的解决方案















最简单的,页面的《提交》按钮,在点击后(校验通过后)Disabled

,这样用户就不会重复点击《提交》按钮;









数据库表增加唯一性索引(比如memberId

),这个只能解决一般(为什么一般,继续看)并发插入的问题;












使用乐观锁,在Table

里增加一个version int

字段,这个可以保证更新操作的并发问题;


Select
version, .. from table1 where id=?





Update set
version=version+1 where id=? And version=?




返回的更新条数(count ==1?true:false

)来判断本次更新是否成功









使用悲观锁,一般使用数据库提供的功能(不建议);




… for
update

(悲观锁)







事物提交,锁释放)











有时候,数据库不能加唯一性索引(比如由memberId,status

两个字段,业务要求memberId,status=approved

的数据唯一,其他状态的数据不做限制);



这个时候,需要寻求新的协调中心(之前是数据库光荣的承担这一角色),我们现在使用的Memcached

可以完成这个任务,利用memcached

协议规定add

的原子性,详细请点击这里







分享到:
评论

相关推荐

    java多线程学习资料

    ### Java多线程学习资料知识点解析 #### 一、引言 Java作为一种广泛使用的编程语言,在并发编程领域具有独特的优势。多线程是Java中实现并发处理的核心技术之一,能够显著提升程序的性能和响应性。本文将深入探讨...

    Java多线程学习Java多线程学习Java多线程学习Java多线程学习.txt

    Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java...

    java多线程学习-ftp上传

    Java多线程学习是编程领域中的重要一环,特别是在服务器端和网络编程中,多线程技术能够有效地利用系统资源,提高程序的并发性。FTP(File Transfer Protocol)上传则是通过网络将本地文件传输到远程服务器的过程。...

    JAVA多线程学习内容

    总的来说,Java多线程学习涵盖了线程的创建、同步、通信、调度以及异常处理等多个方面,深入理解和掌握这些知识点对于提升Java程序的性能和复杂性至关重要。通过阅读提供的"Java多线程.pdf"文档,你可以进一步了解和...

    java多线程学习视频

    Java多线程是一块重要的内容,李兴华讲解的Java是一个很好的资源

    JAVA 多线程学习笔记

    这篇学习笔记将深入探讨Java多线程的核心概念、实现方式以及相关工具的使用。 一、多线程基础 1. 线程与进程:在操作系统中,进程是资源分配的基本单位,而线程是程序执行的基本单位。每个进程至少有一个主线程,...

    Java 多线程学习总结归纳(附代码)

    下面是对Java多线程学习的详细解析。 1. **多线程概述**: 多线程是指一个程序内可以同时执行多个独立的执行流,每个执行流被称为一个线程。Java通过Thread类来代表线程,每个线程都有自己的生命周期,包括新建、...

    java多线程学习java多线程学习.docx

    总的来说,Java多线程学习涵盖了线程的创建与管理、并发工具的使用、以及高级并发编程策略。理解并掌握这些知识,能够帮助开发者编写出高效、可靠的多线程应用。而Doug Lea的工作不仅推动了Java并发技术的发展,也为...

    Java 多线程学习总结6

    在“Java多线程学习总结6”这个主题中,我们可以深入探讨Java多线程的实现、管理及优化。下面将详细阐述相关知识点。 1. **线程的创建方式** - **继承Thread类**:自定义类继承Thread类,并重写run()方法,创建...

    java多线程学习教程

    ### Java多线程学习教程知识点详解 #### 一、Java多线程简介 Java多线程编程是指在Java应用程序中利用多线程技术提高程序的并发性和效率。相比于C或C++等语言,Java提供了更加高级的语言级支持,使得开发者能够...

    Java 多线程学习详细总结

    【Java 多线程学习详细总结】 在Java编程中,多线程是处理并发执行任务的关键技术。本文将深入探讨Java中的多线程概念、实现方式、线程状态转换、线程调度、线程同步以及数据传递等相关知识。 1. **扩展`java.lang...

    Java多线程学习-动力节点共22页.pdf.zip

    本资料“Java多线程学习-动力节点共22页.pdf.zip”提供了对Java多线程的深入学习,旨在帮助开发者掌握这一关键技术。 1. **线程基础**:Java中的线程是通过`Thread`类或者实现`Runnable`接口来创建的。通过继承`...

    java多线程学习探讨

    Java多线程是Java编程中的一个核心概念,它允许程序同时执行多个...PPT文件"Ch17 多线程.ppt"可能会包含更详细的讲解,包括线程安全的数据结构、并发集合、线程间的通信机制等内容,这些都是Java多线程学习的重要部分。

    Java多线程学习笔记

    ### Java多线程学习笔记 #### 一、线程的基本概念 在计算机科学中,**线程**(Thread)是程序执行流的最小单位。一个标准的程序只能做一件事情,而通过多线程技术,可以让程序同时处理多个任务。在Java中,线程是...

    Java多线程学习基础原理

    Java多线程学习基础原理主要涉及以下几个方面: 1. 线程的创建和启动 Java提供了两种创建线程的方式:继承Thread类和实现Runnable接口。当创建一个Thread类的子类对象并调用start()方法时,会启动一个新的线程,并...

Global site tag (gtag.js) - Google Analytics