
java面试系列-并发编程系列+高并发
java高级必问题目,特别是BAT,杭州网易+阿里系,非常执着问这个面试题目。线程高并发是必须要掌握的知识点,高并发是目前JAVA薪资最高,技能最高,要求最高的一个技能,想进好公司,就需要好好地准备这个知识点的掌握和准备好面试。
优惠券已抵扣
余额抵扣
还需支付
¥29.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
苦思冥想行则将至
分享下心得!加油,会越来越好的!让这世界更加美好我们一起努力!
展开
-
JVM调优学习笔记,获取JVM各个时代的内存信息,来进行判断是栈溢出还是堆溢出
查看GC信息public class Test01 { public static void main(String[] args) { //-Xms5m -Xmx20m -XX:+PrintGCDetails -XX:+UseSerialGC -XX:+PrintCommandLineFlags //查看GC信息 System.out.println("max memor...原创 2020-02-17 09:12:34 · 264 阅读 · 0 评论 -
【java工具类】雪花算法代码讲解详情注释,主要是实现数据库数据表的id的自动生成的效果,java代码的雪花算法以及备注说明。多线程运行结果展示
雪花算法的运行结果展示:735080602725777408735080602725777409735080602725777410735080602725777411735080602725777412735080602725777413735080602725777414735080602725777415735080602725777416735080602725777417雪花算法的java代码实现/** * Twitter_Snowflake<br&g原创 2020-07-21 10:34:21 · 535 阅读 · 0 评论 -
阿里社招笔试题目-多线程交替打印1-100的整数,一共三道题目一共1小时java源码
/**** * 一、 两个线程交替打印1-100的整数 * * 题目说明 * * 两个线程交替打印1-100的整数,一个打印奇数,一个打印偶数,要求输出结果有序 * * * */ */public class NumTest extends Thread{ //是否现在先运行 private boolean runNow; private Object lock; private volatile int num; ..原创 2020-05-18 15:38:31 · 1593 阅读 · 0 评论 -
Java.lang.NumberFormatException:multiple points错误解析定位问题进行解决-多线程问题--线程安全的日期处理方案,针对面试时问你遇到过哪些多线程问题
好了,问题解决,在多线程环境下,一定要注意共享变量的线程安全问题,如无特殊必要,建议不要随便定义静态公共变量,如果非要定义,建议考虑好多线程的问题!package com.yongcheng.liuyang.utils;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;/***** @author Administrator**/public class Date...原创 2020-05-11 11:44:45 · 686 阅读 · 0 评论 -
阿里社招笔试题-java编码针对社招只有俩年工作的java同学需要笔试,考察如何加锁,可使用分布式锁也可以使用线程锁模拟业务实现场景,就是支付场景,必备加锁考察
//评测题目: 无实现转账系统,给外部系统提供账户开户,充值,转账rpc服务,要求如下,- 账户类设计:类名:Account,包含属性账号,账户余额,持有人身份证账号- 开户功能: - 入参:开户人身份证账号 - 功能逻辑:创建对应的Account,并持久化 - 返回值:账号 - 要求:一个身份证只允许有一个Account,每个Account的账号唯一- 充值功能: ...原创 2020-04-25 17:03:46 · 725 阅读 · 0 评论 -
并发编程系列之十九多线程ReentrantLock可重入锁的实际意义
可重入锁的意义在于这个锁可以重复使用。import java.util.concurrent.locks.ReentrantLock;/** * lock.getHoldCount()方法:只能在当前调用线程内部使用,不能再其他线程中使用 * 那么我可以在m1方法里去调用m2方法,同时m1方法和m2方法都持有lock锁定即可 测试结果holdCount数递增 * */publ...原创 2020-02-17 09:22:14 · 581 阅读 · 0 评论 -
并发编程系列之十八多线程使用Semaphore
Semaphore: 可以理解为 synchronized 的加强版,作用是控制线程的并发数量。就这一点而言,单纯的synchronized 关键字是实现不了的。semaphore.acquire(2) 表示每次线程进入将会占用2个通路,semaphore.release(2) 运行时表示归还2个通路。没有通路,则线程就无法进入代码块。代表信号量的释放与使用。必须由获取它的线程释放示...原创 2020-01-22 13:27:16 · 309 阅读 · 0 评论 -
并发编程系列之十七多线程使用Callable实现多线程
当Future的get方法稍后被调用时,如果任务运行得很快的话,Future将会立刻得到这个值(如同本例的情况),否则将一直等到该值生成完毕为止。对Future的get方法的调用会阻塞当前线程并等待任务结束,而不会阻塞其它的任务和线程。这个特定的例子使用固定数线程池来产生ExecutorService对象,后提交的任务可能比前提交的任务先完成。示例1 ,演示通过Future...原创 2020-01-21 18:59:08 · 403 阅读 · 0 评论 -
并发编程系列之十六多线程使用CountDownLatch信号量
final CountDownLatch countDown = new CountDownLatch(100);可以让100个线程阻塞-释放,操作控制运行。示例1,俩个线程能够一个等待另一个线程释放资源才执行。主要是线程调度的切换,在高并发下能够模拟俩个动作的先后。import java.text.SimpleDateFormat;import java.util.Date;im...原创 2020-01-21 17:47:55 · 369 阅读 · 0 评论 -
并发编程系列之十五多线程使用线程池ThreadPoolExecutor
线程池是经常面试问到的问题,主要有几种实现方式?具体参数代表的意思有些?多线程实现有哪一些?这些会在文章总结出讲解主要关键干货。示例1 ,线程池的实现与定时任务的线程实现:import java.text.SimpleDateFormat;import java.util.Date;import java.util.concurrent.ExecutorService;imp...原创 2020-01-21 17:32:21 · 733 阅读 · 0 评论 -
并发编程系列之十四多线程使用线程Socket通信
并发编程系列之十四多线程使用线程Socket通信,可以使用多线程进行通信,示例1 一个小小的demo服务器端import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.Outp...原创 2020-01-21 14:32:22 · 353 阅读 · 0 评论 -
并发编程系列之十三多线程使用线程安全集合ConcurrentHashMap
HashMap是实现数组+链表+红黑树实现的。是线程不安全的,在多线程条件下不建议使用。示例1、针对HashMap的测试,可以看到在多线程条件下,HashMap乱序不能正常,单线程下能正常输出有顺序列表。/** * Createon2020年1月20日下午3:07:10 * @author脚踏实地,2020涅槃重生 * @version...原创 2020-01-21 10:34:08 · 419 阅读 · 0 评论 -
并发编程系列之十二多线程使用线程安全集合Vector或者HashTable
首先要见过一个异常错误,面试的时候经常会遇到,就是Exception in thread "main" java.util.ConcurrentModificationException at java.util.Vector$Itr.checkForComodification(Vector.java:1210) at java.util.Vector$Itr.next(Vector....原创 2020-01-21 10:34:02 · 362 阅读 · 0 评论 -
并发编程系列之十一线程安全实现懒汉式单例的DoubleCheck优化,线程安全的单例模式
示例1.线程安全的单例模式,在我们开发过程中经常的运用单例模式,不论Spring、SpringMVC、SpringCloud或者SpringBoot,在其中的源码里面经常使用懒汉模式或者就是线程安全的单例模式设计模式,有些时候这个就是坑。源码是实现了DoubleCheck的线程安全的单例模式import java.text.SimpleDateFormat;import java.u...原创 2020-01-21 10:33:46 · 776 阅读 · 0 评论 -
并发编程系列之十线程安全wait和notify使用同时加锁使用
示例1、代码主要是是使用了1、wait()、notify/notifyAll() 方法是Object的本地final方法,无法被重写。2、wait()使当前线程阻塞,前提是 必须先获得锁,一般配合synchronized 关键字使用,即,一般在synchronized 同步代码块里使用 wait()、notify/notifyAll() 方法。3、 由于 wait()、notif...原创 2020-01-20 15:12:58 · 559 阅读 · 0 评论 -
并发编程系列之九线程安全多线程交换俩个数【面试题】
在我们经常使用多线程的场景中,会出现一道面试题也会是上机题目,就是多线程如何实现交互的输出奇偶数或者交换一个数据,1、wait()、notify/notifyAll() 方法是Object的本地final方法,无法被重写。2、wait()使当前线程阻塞,前提是 必须先获得锁,一般配合synchronized 关键字使用,即,一般在synchronized 同步代码块里使用 wait()、n...原创 2020-01-20 14:41:39 · 321 阅读 · 0 评论 -
并发编程系列之八线程安全List list = new ArrayList()不是线程安全的
并发编程系列之八线程安全List list = new ArrayList()不是线程安全的,ArrayList里面增删改查的操作,底层是数组的实现,效率很高但是线程不安全,在银行或者记账的场景中需要谨慎的使用这个集合类。示例1.ConcurrentModificationException()removeIfboolean add(E e);boolean remove(Ob...原创 2020-01-20 13:16:51 · 1540 阅读 · 0 评论 -
并发编程系列之七多线程原子类AtomicInteger与不能保证原子性的volatile【原子在多线程下发生争抢】
并发编程系列之七多线程原子类AtomicInteger与不能保证原子性的volatile【原子在多线程下发生争抢】,原子类都在JUC里面的Atomic包下面,包括所有的原子类,基本类的7个都有的,volatile【原子在多线程下发生争抢】,之所以不能保证原子性,主要是因为工作内存与线程内存在多线程的资源分布下,交互时volatile在刷新工作内存的时候没有保证线程的前后顺序。发生谁得到谁刷新,导...原创 2020-01-20 13:02:47 · 593 阅读 · 0 评论 -
并发编程系列之六多线程synchronized重入锁死锁的四个必要条件【重要】
并发编程系列之六多线程synchronized重入锁住对象发生变化。计算机组成原理与操作系统书籍中有讲解1、互斥:某种资源一次只允许一个进程访问,即该资源一旦分配给某个进程,其他进程不能再访问,直到该进程访问结束。2、占有且等待:一个进程本身占有资源(一种或多种),同时还有资源未得到满足,正在等待其他进程释放该资源。3、不可抢占:别人已经占有了某项资源,你不能因为...原创 2020-01-20 12:15:17 · 432 阅读 · 0 评论 -
并发编程系列之五多线程synchronized是可重复加锁,重入锁
并发编程系列之五多线程synchronized是可重复加锁,重入锁。对于重入锁的概念就是可以重复的加锁。、示例1,在同一个类里面进行加锁,不同的方法调用,都一层一层的嵌套进行加锁,示例1演示重入锁的概念。public class AchieveSync { public synchronized void method1(){ System.out.println("并发编程系列...原创 2020-01-20 11:16:59 · 1039 阅读 · 1 评论 -
并发编程系列之四多线程synchronized保证原子性实现,对象调用之前实现赋值
并发编程系列之四多线程synchronized保证原子性实现,对象调用之前实现赋值。示例源码:/**** * 实现原子性 */public class AchieveAtomicity { private String username = "usernameTemp"; private String password = "passwordTemp"; public s...原创 2020-01-20 10:51:19 · 265 阅读 · 0 评论 -
并发编程系列之三多线程对象锁的同步和异步问题synchronized针对俩个不同方法体
对象锁的同步和异步问题 线程安全示例1synchronized针对俩个不同方法体俩个线程异步调用了对象的俩个异步操作方法体方法。操作步骤1.import java.text.SimpleDateFormat;import java.util.Date;public class MyObject { public synchronized void method1(){ t...原创 2020-01-20 10:33:45 · 748 阅读 · 0 评论 -
并发编程系列之二多线程对象锁synchronized修饰前方法添加static
对象锁1、没有static修饰方法,那么修饰的是方法,如果有那么就是对象,synchronized修饰方法并不能保证元素的原子性/** * 关键字synchronized取得的锁都是对象锁,而不是把一段代码(方法)当做锁, * 所以代码中哪个线程先执行synchronized关键字的方法,哪个线程就持有该方法所属对象的锁(Lock), * 在静态方法上加synchronized关键字,...原创 2020-01-20 10:25:30 · 343 阅读 · 0 评论 -
并发编程系列之一多线程安全与不安全区分
线程安全的示例一、synchronized 修饰run方法import java.util.concurrent.atomic.AtomicInteger;/** * 线程安全概念:当多个线程访问某一个类(对象或方法)时,这个对象始终都能表现出正确的行为,那么这个类(对象或方法)就是线程安全的。 * synchronized:可以在任意对象及方法上加锁,而加锁的这段代码称为"互斥区"...原创 2020-01-20 10:14:46 · 265 阅读 · 0 评论