
多线程
裂魂人1214
这个作者很懒,什么都没留下…
展开
-
多线程-wait,notify
wait和notify一般都是配对使用,wait等待时会释放锁给其他线程,通过notify唤醒后继续执行,经典案例就是生产者和消费者,下面来看下代码/** * @description: * 资源类,生产者和消费者会同时调用这个类,Resource相当于一个货架,最多可以存放10件产品, * 当货架有产品时,消费者就会调用remove()方法进行消费,没有时进入等待, * 当货架商品小于10件时,生产者就会往货架上生产产品,多于10件时,就会等待消费者来消费 * @author: kongw原创 2020-05-13 16:25:48 · 262 阅读 · 0 评论 -
多线程-ReentrantReadWriteLock读写锁
public class ReadWriteLockTest { ReentrantReadWriteLock readWriteLock = new ReentrantReadWriteLock(); Lock readLock = readWriteLock.readLock(); Lock writeLock = readWriteLock.writeLock(); List<User> userList = new ArrayList<>().原创 2020-05-09 16:21:05 · 209 阅读 · 0 评论 -
多线程-Lock锁lockInterruptibly()
public class LockInterruptiblyTest { private Lock lock = new ReentrantLock(); public static void main(String[] args) { LockInterruptiblyTest test = new LockInterruptiblyTest(); MyThread thread1 = new MyThread(test); MyThre.原创 2020-05-09 16:19:05 · 329 阅读 · 0 评论 -
多线程-Lock锁tryLock()
public class TryLockTest { Lock lock = new ReentrantLock(); private ArrayList<Integer> arrayList = new ArrayList<Integer>(); public static void main(String[] args) { final TryLockTest test = new TryLockTest(); new.原创 2020-05-09 16:16:58 · 837 阅读 · 0 评论 -
多线程-Lock锁lock()
正常使用lock.lock()和lock.unlock(),Lock会发生死锁现象,所以要放在finally中public class LockTest { Lock lock = new ReentrantLock(); private ArrayList<Integer> arrayList = new ArrayList<Integer>(); public static void main(String[] args) { f.原创 2020-05-09 16:15:16 · 642 阅读 · 0 评论 -
多线程-ThreadPoolExecutor线程池
阿里开发文档推荐使用原生的api创建线程池,因为如果使用像CachedThreadPool这种预定义线程池,有可能会出现一些未知错误,如OOM,而且不利于理解线程的各参数的作用首先看下面的例子public class ThreadPoolExecutorDIY { public static void main(String[] args) throws InterruptedE...原创 2020-04-29 17:23:54 · 236 阅读 · 0 评论 -
java高并发解决方案
如果一个接口并发量比较高,正常的查询更新数据库肯定会有问题,比如我们有一个SynTest的接口 @GetMapping("SynTest") public Response synTest(){ boolean result = testService.queryAndUpdate("huawei", 1); return BaseUtil...原创 2020-04-11 16:58:40 · 1218 阅读 · 0 评论 -
多线程-ThreadLocal
ThreadLocal<T>其实是与线程绑定的一个变量。ThreadLocal和Synchonized都用于解决多线程并发访问。但是ThreadLocal与synchronized有本质的区别。Synchronized用于线程间的数据共享,而ThreadLocal则用于线程间的数据隔离。Synchronized是利用锁的机制,使变量或代码块在某一时该只能被一个线程访问。而ThreadL...原创 2020-03-19 22:30:34 · 625 阅读 · 0 评论 -
多线程-volatile
volatile关键字的应用场景主要是一写多读,因为volatile只能对多线程处理变量的可见性,并不能保证原子性,所以并发修改变量的时候还是要用synchronized加锁处理,例子/* * CMB Confidential * * Copyright (C) 2017 China Merchants Bank Co., Ltd. All rights reserved. * ...原创 2020-03-19 11:06:34 · 153 阅读 · 0 评论 -
多线程-synchronized关键字
synchronized是java多线程很常用的关键字,可用它对线程jia加锁,在一个线程执行的时候,阻塞其他线程的访问,可用于类,变量和方法上,synchronized作用的是对象,如果使用不当的话,synchronized锁并不会生效,举个例子package com.qingwei.springboot.juc;/** * Created by kongwc on 2020/3/...原创 2020-03-18 22:46:39 · 144 阅读 · 0 评论