多线程
卡肤卡
这个作者很懒,什么都没留下…
展开
-
blockingQueue实现消费-生产模式
blockingQueue实为阻塞队列,数据由消费者线程、生产者线程共享。消费者产生数据放入阻塞队列,倘若阻塞队列已满,则生产者线程被阻塞直到消费者线程取出数据或者是直接返回失败,若队列数据为空,则消费者线程阻塞直到生产者线程放入数据或者直接返回失败。且阻塞队列的数据为先进先出的规则。常用apioffer(E e) 向阻塞队列放入数据,倘若阻塞队列已满,则直接返回false。offer(E e,原创 2017-03-19 16:55:12 · 767 阅读 · 0 评论 -
CyclicBarrier 高并发的使用
CyclicBarrier是Java中java.util.concurrent并发包里的一个工具类。作用就是控制多个线程同时等待某个事件的执行才会一起执行。使用场景:多用于多个子线程等待主线程执行完毕后执行的场景。两个重要构造方法:new CyclicBarrier(int)int为等待的线程的个数。 new CyclicBarrier(int,Runnable)Runnable为等待的线程被触发原创 2017-03-19 21:07:11 · 574 阅读 · 0 评论 -
项目中执行lock.unlock()出现java.lang.IllegalMonitorStateException
项目中代码,这段代码是判断excel是不是正在导出中,并发量只允许为1,因为excel导出很占cpu资源@RequestMapping("excelOrderExportCheck.json") @ResponseBody public AjaxObj excelOrderExportCheck(){ AjaxObj ajaxObj=new AjaxObj(); //防止重复exce原创 2017-03-27 12:21:02 · 11250 阅读 · 2 评论 -
java 并发包之Semaphore
Semaphore是java5之后并发包里的工具类。是用来在并发时控制同时访问特定资源的线程数量,它通过协调各个线程,以保证合理的使用公共资源。例如一个奶茶店,同时只能为5个人提供服务,其余的人必须等待其前面五个人服务完毕后才能接受服务,如果所有的人同时一窝蜂的去请求服务那会导致很多问题发生甚至奶茶铺崩溃。使用场景: 项目中某个核心接口需要频繁的访问数据库资源,频繁的io操作,如果高并发时,同时1原创 2017-04-04 22:37:32 · 528 阅读 · 0 评论 -
java 并发包之countDownLatch
countDownLatch是Java.util.concurrent里的并发工具包。它是让某个线程等待其他线程处理完再执行。所用场景:例如导出10万条的订单记录时,需要对每一条订单记录进行处理后再导出,这是由于数据量过大需要采用10个线程对这10万条数据进行处理,那么导出execel的这个动作或者线程需等待上面10个线程处理完再执行。构造方法:new CountDownLatch(int coun原创 2017-03-29 20:38:44 · 464 阅读 · 1 评论