- 浏览: 2652879 次
- 来自: 杭州
文章分类
- 全部博客 (1188)
- webwork (4)
- 网摘 (18)
- java (103)
- hibernate (1)
- Linux (85)
- 职业发展 (1)
- activeMQ (2)
- netty (14)
- svn (1)
- webx3 (12)
- mysql (81)
- css (1)
- HTML (6)
- apache (3)
- 测试 (2)
- javascript (1)
- 储存 (1)
- jvm (5)
- code (13)
- 多线程 (12)
- Spring (18)
- webxs (2)
- python (119)
- duitang (0)
- mongo (3)
- nosql (4)
- tomcat (4)
- memcached (20)
- 算法 (28)
- django (28)
- shell (1)
- 工作总结 (5)
- solr (42)
- beansdb (6)
- nginx (3)
- 性能 (30)
- 数据推荐 (1)
- maven (8)
- tonado (1)
- uwsgi (5)
- hessian (4)
- ibatis (3)
- Security (2)
- HTPP (1)
- gevent (6)
- 读书笔记 (1)
- Maxent (2)
- mogo (0)
- thread (3)
- 架构 (5)
- NIO (5)
- 正则 (1)
- lucene (5)
- feed (4)
- redis (17)
- TCP (6)
- test (0)
- python,code (1)
- PIL (3)
- guava (2)
- jython (4)
- httpclient (2)
- cache (3)
- signal (1)
- dubbo (7)
- HTTP (4)
- json (3)
- java socket (1)
- io (2)
- socket (22)
- hash (2)
- Cassandra (1)
- 分布式文件系统 (5)
- Dynamo (2)
- gc (8)
- scp (1)
- rsync (1)
- mecached (0)
- mongoDB (29)
- Thrift (1)
- scribe (2)
- 服务化 (3)
- 问题 (83)
- mat (1)
- classloader (2)
- javaBean (1)
- 文档集合 (27)
- 消息队列 (3)
- nginx,文档集合 (1)
- dboss (12)
- libevent (1)
- 读书 (0)
- 数学 (3)
- 流程 (0)
- HBase (34)
- 自动化测试 (1)
- ubuntu (2)
- 并发 (1)
- sping (1)
- 图形 (1)
- freemarker (1)
- jdbc (3)
- dbcp (0)
- sharding (1)
- 性能测试 (1)
- 设计模式 (2)
- unicode (1)
- OceanBase (3)
- jmagick (1)
- gunicorn (1)
- url (1)
- form (1)
- 安全 (2)
- nlp (8)
- libmemcached (1)
- 规则引擎 (1)
- awk (2)
- 服务器 (1)
- snmpd (1)
- btrace (1)
- 代码 (1)
- cygwin (1)
- mahout (3)
- 电子书 (1)
- 机器学习 (5)
- 数据挖掘 (1)
- nltk (6)
- pool (1)
- log4j (2)
- 总结 (11)
- c++ (1)
- java源代码 (1)
- ocr (1)
- 基础算法 (3)
- SA (1)
- 笔记 (1)
- ml (4)
- zokeeper (0)
- jms (1)
- zookeeper (5)
- zkclient (1)
- hadoop (13)
- mq (2)
- git (9)
- 问题,io (1)
- storm (11)
- zk (1)
- 性能优化 (2)
- example (1)
- tmux (1)
- 环境 (2)
- kyro (1)
- 日志系统 (3)
- hdfs (2)
- python_socket (2)
- date (2)
- elasticsearch (1)
- jetty (1)
- 树 (1)
- 汽车 (1)
- mdrill (1)
- 车 (1)
- 日志 (1)
- web (1)
- 编译原理 (1)
- 信息检索 (1)
- 性能,linux (1)
- spam (1)
- 序列化 (1)
- fabric (2)
- guice (1)
- disruptor (1)
- executor (1)
- logback (2)
- 开源 (1)
- 设计 (1)
- 监控 (3)
- english (1)
- 问题记录 (1)
- Bitmap (1)
- 云计算 (1)
- 问题排查 (1)
- highchat (1)
- mac (3)
- docker (1)
- jdk (1)
- 表达式 (1)
- 网络 (1)
- 时间管理 (1)
- 时间序列 (1)
- OLAP (1)
- Big Table (0)
- sql (1)
- kafka (1)
- md5 (1)
- springboot (1)
- spring security (1)
- Spring Boot (3)
- mybatis (1)
- java8 (1)
- 分布式事务 (1)
- 限流 (1)
- Shadowsocks (0)
- 2018 (1)
- 服务治理 (1)
- 设计原则 (1)
- log (0)
- perftools (1)
最新评论
-
siphlina:
课程——基于Python数据分析与机器学习案例实战教程分享网盘 ...
Python机器学习库 -
san_yun:
leibnitz 写道hi,我想知道,无论在92还是94版本, ...
hbase的行锁与多版本并发控制(MVCC) -
leibnitz:
hi,我想知道,无论在92还是94版本,更新时(如Puts)都 ...
hbase的行锁与多版本并发控制(MVCC) -
107x:
不错,谢谢!
Latent Semantic Analysis(LSA/ LSI)算法简介 -
107x:
不错,谢谢!
Python机器学习库
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多线程中,很多时候需要相互等到别的线程做了某见事情,其他线程才能进入下一步,一种方式是通过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
的原子性,详细请点击这里
发表评论
-
JVM锁实现探究:synchronized初探
2014-03-26 12:40 5882原文: http://www.majin163.com/2 ... -
ThreadPoolExecutor入门
2013-08-21 16:09 970一、corePoolSize和maximumPoolSiz ... -
SynchronousQueue
2013-07-07 22:02 1570SynchronousQueue 一种阻塞队列,其中每个 ... -
深入JVM锁机制2-Lock
2013-07-07 00:47 871前文(深入JVM锁机制-synchronized)分析了JV ... -
深入JVM锁机制1-synchronized
2013-07-07 00:34 908目前在Java中存在两种锁 ... -
java与python多线程wait,notify操作比较
2013-07-06 23:36 2231wait 和notify的应用场景 在学习wait,no ... -
Java中容易踩到的“坑”系列之线程池篇
2013-03-29 13:49 2847原文:http://hellojava.info ... -
淘宝工程师分享并发系列文章
2012-12-31 00:11 28聊聊并发(一)深入分析Volatile的实现原理 ... -
一种高效无锁内存队列的实现
2012-11-25 02:20 96Disruptor是LMAX公司开源的一个高效的内存无 ... -
HashTable, hashmap ,ConcurrentHashMap
2012-11-18 23:20 1075http://www.ibm.com/developerwor ... -
并发编程文档集合
2012-11-04 21:54 0【并发编程】深入研究并发编程 【并发编程】深入分析V ... -
exodus2线程总结
2012-08-26 18:25 513现象描述 exodus2在启动不久后就挂住,用kill -3 ... -
并发导致计数不准确问题总结
2012-08-26 15:17 1246并发问题多多!!!! 实际已经395个参与者了,页 ... -
并发的常见问题和对应的解决方案
2012-08-29 18:22 10951、 最简单的,页面的《提交》按钮,在点击后(校 ...
相关推荐
### Java多线程学习资料知识点解析 #### 一、引言 Java作为一种广泛使用的编程语言,在并发编程领域具有独特的优势。多线程是Java中实现并发处理的核心技术之一,能够显著提升程序的性能和响应性。本文将深入探讨...
Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java...
Java多线程学习是编程领域中的重要一环,特别是在服务器端和网络编程中,多线程技术能够有效地利用系统资源,提高程序的并发性。FTP(File Transfer Protocol)上传则是通过网络将本地文件传输到远程服务器的过程。...
总的来说,Java多线程学习涵盖了线程的创建、同步、通信、调度以及异常处理等多个方面,深入理解和掌握这些知识点对于提升Java程序的性能和复杂性至关重要。通过阅读提供的"Java多线程.pdf"文档,你可以进一步了解和...
Java多线程是一块重要的内容,李兴华讲解的Java是一个很好的资源
这篇学习笔记将深入探讨Java多线程的核心概念、实现方式以及相关工具的使用。 一、多线程基础 1. 线程与进程:在操作系统中,进程是资源分配的基本单位,而线程是程序执行的基本单位。每个进程至少有一个主线程,...
下面是对Java多线程学习的详细解析。 1. **多线程概述**: 多线程是指一个程序内可以同时执行多个独立的执行流,每个执行流被称为一个线程。Java通过Thread类来代表线程,每个线程都有自己的生命周期,包括新建、...
总的来说,Java多线程学习涵盖了线程的创建与管理、并发工具的使用、以及高级并发编程策略。理解并掌握这些知识,能够帮助开发者编写出高效、可靠的多线程应用。而Doug Lea的工作不仅推动了Java并发技术的发展,也为...
在“Java多线程学习总结6”这个主题中,我们可以深入探讨Java多线程的实现、管理及优化。下面将详细阐述相关知识点。 1. **线程的创建方式** - **继承Thread类**:自定义类继承Thread类,并重写run()方法,创建...
### CoreJava多线程学习总结 #### 一、基本概念 多线程是现代软件开发中非常重要的一个概念,尤其在Java这样的高级编程语言中,它使得程序能够更高效地利用计算机资源,实现并发处理任务。为了更好地理解CoreJava...
### Java多线程学习教程知识点详解 #### 一、Java多线程简介 Java多线程编程是指在Java应用程序中利用多线程技术提高程序的并发性和效率。相比于C或C++等语言,Java提供了更加高级的语言级支持,使得开发者能够...
【Java 多线程学习详细总结】 在Java编程中,多线程是处理并发执行任务的关键技术。本文将深入探讨Java中的多线程概念、实现方式、线程状态转换、线程调度、线程同步以及数据传递等相关知识。 1. **扩展`java.lang...
本资料“Java多线程学习-动力节点共22页.pdf.zip”提供了对Java多线程的深入学习,旨在帮助开发者掌握这一关键技术。 1. **线程基础**:Java中的线程是通过`Thread`类或者实现`Runnable`接口来创建的。通过继承`...
Java多线程是Java编程中的一个核心概念,它允许程序同时执行多个...PPT文件"Ch17 多线程.ppt"可能会包含更详细的讲解,包括线程安全的数据结构、并发集合、线程间的通信机制等内容,这些都是Java多线程学习的重要部分。
### Java多线程学习笔记 #### 一、线程的基本概念 在计算机科学中,**线程**(Thread)是程序执行流的最小单位。一个标准的程序只能做一件事情,而通过多线程技术,可以让程序同时处理多个任务。在Java中,线程是...
Java多线程学习基础原理主要涉及以下几个方面: 1. 线程的创建和启动 Java提供了两种创建线程的方式:继承Thread类和实现Runnable接口。当创建一个Thread类的子类对象并调用start()方法时,会启动一个新的线程,并...