并发
文章平均质量分 73
huangshulang1234
这个作者很懒,什么都没留下…
展开
-
Java多线程体系
一、线程的状态新建(New)创建后尚未启动。可运行(Runnable)可能正在运行,也可能正在等待 CPU 时间片。包含了操作系统线程状态中的 Running 和 Ready。阻塞(Blocked)等待获取一个排它锁,如果其线程释放了锁就会结束此状态。无限期等待(Waiting)等待其它线程显式地唤醒,否则不会被分配 CPU 时间片。进入方法 退出方法 没有设置 Ti...转载 2019-11-12 10:06:13 · 717 阅读 · 0 评论 -
java synchronized关键字的用法以及锁的等级:方法锁、对象锁、类锁
java synchronized关键字的用法以及锁的等级:方法锁、对象锁、类锁转载自:http://blog.csdn.net/le_le_name/article/details/52348314java的内置锁:每个java对象都可以用做一个实现同步的锁,这些锁成为内置锁。线程进入同步代码块或方法的时候会自动获得该锁,在退出同步代码块或方法时会释放该锁。获得内置锁转载 2018-03-16 08:59:45 · 182 阅读 · 0 评论 -
线程同步,对象级别锁,类级别锁
线程同步,对象级别锁,类级别锁同步一般是指在多线程中,在某一时刻,一个同步块代码只能在一个线程中执行。的Java的支持多线程执行,所以可能出现两个或者更多的线程访问同一个字段或者对象。同步是一个过程,保持所有并发线程同步执行。同...转载 2018-03-10 10:08:19 · 322 阅读 · 0 评论 -
Java多线程的常见例子
Java多线程的常见例子作者:NarcisoForHer转载:点击阅读全文查看一.相关知识:Java多线程程序设计到的知识:(一)对同一个数量进行操作(二)对同一个对象进行操作(三)回调方法使用(四)线程同步,死锁问题(五)线程通信 等等 二.示例一:三个售票窗口同时出售20张票;转载 2018-03-13 09:27:51 · 183 阅读 · 0 评论 -
死磕Java并发】-----J.U.C之Java并发容器:ConcurrentHashMap
死磕Java并发】-----J.U.C之Java并发容器:ConcurrentHashMapHashMap是我们用得非常频繁的一个集合,但是由于它是非线程安全的,在多线程环境下,put操作是有可能产生死循环的,导致CPU利用率接近100%。为了解决该问题,提供了Hashtable和Collections.synchronizedMap(hashMap)两种解决方案,但是这两种方转载 2018-03-30 08:47:10 · 151 阅读 · 0 评论 -
mysql 并发处理
mysql 并发处理并发处理 当多个连接对记录进行修改时保证数据的一致性和完整性为什么要用到并发控制假设我们的数据库中存在着商品的记录,现在有两个用户进行登陆,假设一个用户要删除id为22的记录,一个用户要读取id为22的记录,那么会发生什么样的结果呢,结果可能是正在读取信息的用户报错而退出,也可能是他会得到一条和实际信息不符的信息。转载 2018-03-25 08:58:54 · 265 阅读 · 0 评论 -
Java并发06---ThreadLocal类以及应用技巧
Java并发06---ThreadLocal类以及应用技巧上一节总结了一下,线程范围内的数据共享问题,即定义一个Map,将当前线程名称和线程中的数据以键值对的形式存到Map中,然后在当前线程中使用数据的时候就可以根据当前线程名称从Map中拿到当前线程中的数据,这样就可以做到不同线程之间数据互不干扰。其实ThreadLocal类就是给我们提供了这个解决方法,所以我们完全可以用Th转载 2018-03-31 16:19:26 · 195 阅读 · 0 评论 -
有界、无界队列对ThreadPoolExcutor执行的影响
有界、无界队列对ThreadPoolExcutor执行的影响ava提供了4钟线程池:newCachedThreadPoolnewFixedThreadPoolnewSingleThreadExecutornewScheduledThreadPool你可以通过Executors来实例化这四种线程池。查看源码会发现,这四种线程池都直接或者转载 2018-03-22 09:51:30 · 1151 阅读 · 0 评论 -
并发编程JMM系列之基础!
并发编程JMM系列之基础!来源 | 公众号 | Justin的后端书架Java程序员在进行多线程开发时,并不需要关心线程间是如何通信的,这些对程序员本来来说完全是透明的,但是内存可见性问题很容易让我们困惑,今天我们就讲讲Java内存模型(JMM)相关知识点,首先我们先讲讲内存模型的一些基本概念,对内存模型有个大概的认识,让我们开始今天的并发之旅吧。一、并发编程转载 2018-03-22 09:52:32 · 236 阅读 · 0 评论 -
Java高并发,如何解决,什么方式解决1
Java高并发,如何解决,什么方式解决1对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了。而并发问题是绝大部分的程序员头疼的问题,但话又说回来了,既然逃避不掉,那我们就坦然面对吧~今天就让我们一起来研究一下常见的并发和同步吧。为了更好的理解并发和同步,我们需要先明白两个重要的概念:同步和异步 1、同步和异步的区别和联系转载 2018-04-01 20:13:06 · 240 阅读 · 0 评论 -
java高并发锁的3种实现
java高并发锁的3种实现提到锁,大家可能都会想到synchronized关键字,使用它的确可以解决一切并发问题,但是对于系统吞吐要求更高的,在这里提供了几个小技巧,帮助大家减小锁粒度,提高系统并发能力。初级技巧 - 乐观锁乐观锁适合这样的场景:读不会冲突,写会冲突。同时读的频率远大于写。 以下面的代码为例,悲观锁的实现: J转载 2018-04-01 20:16:04 · 2360 阅读 · 0 评论 -
Java 并发:Lock 框架详解
Java 并发:Lock 框架详解摘要: 我们已经知道,synchronized 是java的关键字,是Java的内置特性,在JVM层面实现了对临界资源的同步互斥访问,但 synchronized 粒度有些大,在处理实际问题时存在诸多局限性,比如响应中断等。Lock 提供了比 synchronized更广泛的锁操作,它能以更优雅的方式处理线程同步问题。本文以synchro转载 2018-04-02 09:04:13 · 180 阅读 · 0 评论 -
Java 并发:Thread 类深度解析
Java 并发:Thread 类深度解析摘要: Java 中 Thread类 的各种操作与线程的生命周期密不可分,了解线程的生命周期有助于对Thread类中的各方法的理解。一般来说,线程从最初的创建到最终的消亡,要经历创建、就绪、运行、阻塞 和 消亡 五个状态。在线程的生命周期中,上下文切换通过存储和恢复CPU状态使得其能够从中断点恢复执行。结合 线程生命周期,本文最后详转载 2018-04-02 09:05:39 · 194 阅读 · 0 评论 -
Java并发:线程间通信与协作
Java并发:线程间通信与协作摘要: 线程与线程之间不是相互独立的个体,它们彼此之间需要相互通信和协作,最典型的例子就是生产者-消费者问题。本文首先介绍 wait/notify 机制,并对实现该机制的两种方式——synchronized+wait-notify模式和Lock+Condition模式进行详细剖析,以作为线程间通信与协作的基础。进一步地,以经典的生产者-消费者转载 2018-04-02 09:07:30 · 241 阅读 · 0 评论 -
在JAVA中线程到底起到什么作用!
在JAVA中线程到底起到什么作用!这是javaeye上非常经典的关于线程的帖子,写的非常通俗易懂的,适合任何读计算机的同学.。线程同步我们可以在计算机上运行各种计算机软件程序。每一个运行的程序可能包括多个独立运行的线程(Thread)。 线程(Thread)是一份独立运行的程序,有自己专用的运行栈。线程有可能和其他线程共享一些资源,比如,内存,文件,数据库等。转载 2018-03-27 14:54:19 · 4433 阅读 · 0 评论 -
大型高并发与高可用的三层缓存架构总结
大型高并发与高可用的三层缓存架构总结作者:高级架构师文章来自:https://my.oschina.net/u/3772106/blog/1616343nginx对于中间件nginx常用来做流量的分发,同时nginx本身也有自己的缓存(容量有限),我们可以用来缓存热点数据,让用户的请求直接走缓存并返回,减少流向服务器的流量一.模板引擎通常我们转载 2018-02-28 09:27:29 · 276 阅读 · 0 评论 -
消失的死锁
消失的死锁问题描述如果java层面发生了死锁,当我们使用jstack命令的时候其实是可以将死锁的信息给dump出来的,在dump结果的最后会有类似Found one Java-level deadlock:的关键字,接着会把发生死锁的线程的堆栈及对应的同步锁给打印出来,这次碰到一个系统就发生类似的问题,不过这个dump文档里虽然提到了如下的死锁信息:Found one Java转载 2018-03-07 09:26:51 · 185 阅读 · 0 评论 -
40个Java多线程问题总结
40个Java多线程问题总结1、多线程有什么用?一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,还管它有什么用?在我看来,这个回答更扯淡。所谓"知其然知其所以然","会用"只是"知其然","为什么用"才是"知其所以然",只有达到"知其然知其所以然"的程度才可以说是把一个知识点运用自如。OK,下面说说我对这个问题的看法:(1)发挥多核CPU的优势随着工业转载 2018-03-06 19:35:22 · 144 阅读 · 0 评论 -
Java 四种线程池的例子与说明
Java 四种线程池的例子与说明1、new Thread的弊端执行一个异步任务你还只是如下new Thread吗?那你就out太多了,new Thread的弊端如下:a. 每次new Thread新建对象性能差。b. 线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占用过多系统资源导致死机或oom。c. 缺乏更多功能,如定时执行、定期执转载 2018-02-01 11:02:36 · 274 阅读 · 0 评论 -
Java7任务并行执行神器:Fork&Join框架
Java7任务并行执行神器:Fork&Join框架Fork/Join是什么?Fork/Join框架是Java7提供的并行执行任务框架,思想是将大任务分解成小任务,然后小任务又可以继续分解,然后每个小任务分别计算出结果再合并起来,最后将汇总的结果作为大任务结果。其思想和MapReduce的思想非常类似。对于任务的分割,要求各个子任务之间相互独立,能够并行独立地执行任务,互转载 2018-01-25 09:57:02 · 192 阅读 · 0 评论 -
订单系统中并发问题和锁机制的探讨
订单系统中并发问题和锁机制的探讨问题由来假设在一个订单系统中(以火车票订单系统为例),用户A,用户B都要预定从成都到北京的火车票,A、B在不同的售票窗口均同时查询到了某车厢卧铺中、下铺位有空位。用户A正在犹豫订中铺还是下铺,这时用户B果断订购了下铺。当用户A决定订下铺时,系统提示下铺已经被预订,请重新选择铺位。在这个系统场景中,我们来探讨一下,火车票系统是怎样处理并转载 2018-01-25 10:05:14 · 570 阅读 · 0 评论 -
学习java多线程,这必须搞懂的这几个概念,很重要
学习java多线程,这必须搞懂的这几个概念,很重要同步和异步同步,Synchronous,即调用方法开始,一旦调用就必须等待方法执行完返回才能继续下面的操作。举个例子,你去银行ATM取钱,你必须等到ATM吐完钱你拿到钱取完卡你才能离开。异步,Asynchronous,即不关心方法执行的过程,触发要调用的方法就继转载 2018-01-25 10:06:43 · 154 阅读 · 0 评论 -
一个多线程死锁案例,如何避免及解决死锁问题?
一个多线程死锁案例,如何避免及解决死锁问题?多线程死锁在java程序员笔试的时候时有遇见,死锁概念在之前的文章有介绍,大家应该也都明白它的概念,不清楚的去翻看历史文章吧。下面是一个多线程死锁的例子输出thread1 get lock1thread2 get lock2转载 2018-01-26 09:55:04 · 365 阅读 · 0 评论 -
java高级应用:线程池全面解析
java高级应用:线程池全面解析什么是线程池?很简单,简单看名字就知道是装有线程的池子,我们可以把要执行的多线程交给线程池来处理,和连接池的概念一样,通过维护一定数量的线程池来达到多个线程的复用。线程池的好处我们知道不用线程池的话,每个线程都要通过new Thread(xxRunnabl转载 2018-01-26 09:56:40 · 389 阅读 · 0 评论 -
volatile关键字解析~高级java必问
volatile关键字解析~高级java必问昨天我介绍了原子性、可见性、有序性的概念,那么今天就来见识下这些概念的主角-volatile关键字。volatile基本介绍volatile可以看成是synchronized的一种轻量级的实现,但volatile并不能完全代替synchronized,volatile有syn转载 2018-01-26 10:00:14 · 180 阅读 · 0 评论 -
《深入理解java虚拟机-高效并发》读书笔记
《深入理解java虚拟机-高效并发》读书笔记 Java内存模型与线程概述 多任务处理在现代计算机操作系统中几乎已是一项必备的功能,多任务运行是压榨手段,就如windows一样,我们使劲的压榨它运行多个任务,俱要high又要耍。并发则是另外一种更具体的应用场景。每秒事物处理数(Transactions per Second,tps)是最重要的转载 2018-01-26 10:05:19 · 219 阅读 · 0 评论 -
ThreadLocal应用场景
ThreadLocal应用场景1、数据库连接池实现Class.forName("com.mysql.jdbc.Driver");java.sql.Connection conn = DriverManager.getConnection(jdbcUrl);注意:一次Drivermanager.getConnection(jdbcurl)获得只是一转载 2018-01-27 09:47:44 · 687 阅读 · 0 评论 -
Java多线程之CountDownLatch应用
Java多线程之CountDownLatch应用Java的concurrent包里面的CountDownLatch其实可以把它看作一个计数器,只不过这个计数器的操作是原子操作,同时只能有一个线程去操作这个计数器,也就是同时只能有一个线程去减这个计数器里面的值。 你可以向CountDownLatch对象设置一个初始的数字作为计数值,任何调用这个对象上的a转载 2018-01-27 10:25:41 · 175 阅读 · 0 评论 -
java多线程发令枪CountDownLatch
java多线程发令枪CountDownLatch正如每个Java文档所描述的那样,CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行。在Java并发中,countdownlatch的概念是一个常见的面试题,所以一定要确保你很好的理解了它。在这篇文章中,我将会涉及到在Java并发编 程中跟CountDownLatch相关的以下几点转载 2018-02-03 16:38:54 · 2657 阅读 · 0 评论 -
Java并发包中Lock的实现原理
Java并发包中Lock的实现原理Lock 的简介及使用 Lock是java 1.5中引入的线程同步工具,它主要用于多线程下共享资源的控制。本质上Lock仅仅是一个接口(位于源码包中的java\util\concurrent\locks中),它包含以下方法//尝试获取锁,获取成功则返回,否则阻塞当前线程void lock(); //尝试获转载 2018-02-03 16:47:44 · 251 阅读 · 0 评论 -
Java 并发开发:Lock 框架详解
Java 并发开发:Lock 框架详解摘要:我们已经知道,synchronized 是java的关键字,是Java的内置特性,在JVM层面实现了对临界资源的同步互斥访问,但 synchronized 粒度有些大,在处理实际问题时存在诸多局限性,比如响应中断等。Lock 提供了比 synchronized更广泛的锁操作,它能以更优雅的方式处理线程同步问题。本文以synch转载 2018-01-28 09:50:36 · 194 阅读 · 0 评论 -
PHP结合Redis实现高并发下的抢购、秒杀功能
PHP结合Redis实现高并发下的抢购、秒杀功能抢购、秒杀是如今很常见的一个应用场景,主要需要解决的问题有两个:1. 高并发对数据库产生的压力2. 竞争状态下如何解决库存的正确减少("超卖"问题)对于第一个问题,已经很容易想到用缓存来处理抢购,避免直接操作数据库,例如使用Redis。重点在于第二个问题转载 2018-01-29 09:55:00 · 237 阅读 · 0 评论 -
【死磕Java并发】-----深入分析synchronized的实现原理
【死磕Java并发】-----深入分析synchronized的实现原理记得刚刚开始学习Java的时候,一遇到多线程情况就是synchronized,相对于当时的我们来说synchronized是这么的神奇而又强大,那个时候我们赋予它一个名字“同步”,也成为了我们解决多线程情况的百试不爽的良药。但是,随着我们学习的进行我们知道synchronized是一个重量级锁,相对于Lock,它会转载 2018-01-30 10:19:34 · 220 阅读 · 0 评论 -
提高JavaWeb并发数23条经验
提高JavaWeb并发数23条经验这是一篇由junly总结的大型java项目开发经验,文章从多个方面讨论了如何提高服务器的并发效率。从常用的使用数据库连接池,减少对象的创建,开发架构,框架选型,到不太常用的数据缓存,数据库分级存储,服务器优化等23个方面,作出了比较全面的解析。1 .对Collection、Map接口的类对象初始化时要先分配合理的空间大小,同时还要按照自已的转载 2018-01-21 09:50:21 · 926 阅读 · 0 评论