![](https://img-blog.csdnimg.cn/20190910134456377.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java高并发
关于Java多线程,高并发,以及一些源码的解析
孙靖俊
这个作者很懒,什么都没留下…
展开
-
Java对象的发布与逃逸
先来解释一下两个概念:对象的发布: 将对象的引用返回给作用范围以外的代码使用对象的逃逸: 错误的对象发布方式,在对象没有构造完成时,就把对象提供给其他线程使用,这种发布方式是不安全的对象发布的实例对象的发布看一个demo:public class UnsafeObject { private String[] value = {"a","b","c"}; //使用get发布对象...原创 2019-11-22 12:22:04 · 896 阅读 · 0 评论 -
java Thread常用方法解析
Constructorpublic Thread()public Thread(Runnable target)public Thread(ThreadGroup group, Runnable target)public Thread(String name)public Thread(ThreadGroup group, String name)public Thread(Run...原创 2019-05-05 19:30:23 · 583 阅读 · 0 评论 -
java多线程创建线程的方式
java创建线程有三种方式1.`实现Runnable接口class CreateThread_1 implements Runnable { @Override public void run() { System.out.println(Thread.currentThread().getName()); }}public static vo...原创 2019-05-05 13:30:05 · 386 阅读 · 0 评论 -
死锁
在线程同步的过程中难免会出现死锁,死锁就是两个线程相互等待对方释放同步监视器就会发生,这种情况没有办法检测出来,不会出现任何异常,但是线程一直处于阻塞状态,无法进行。看个例子public class DeadLock { public static void main(String[] args) { A a = new A(); B b = new B...原创 2019-04-08 20:39:16 · 155 阅读 · 0 评论 -
死锁:哲学家就餐问题
有5个哲学家围着一张圆桌子,在每人的左右都有一根筷子,只有凑够两根筷子才可以吃饭,哲学家只有思考和吃饭两个动作,模拟这个过程,探究死锁的产生。如果每个哲学家开始都是先拿起左边的筷子,等待着右边的人放下另外一根筷子,所有的哲学家都拿着一根筷子,所有的哲学家都在等筷子,这样就进入死锁的状态。看一下代码实现:哲学家类:class Philosopher extends ReentrantLock...原创 2019-05-05 21:25:29 · 2223 阅读 · 1 评论 -
多线程安全-线程同步
在多线程情况下,资源被多个线程访问,就会出现一些问题下面看一个例子,写一个模拟银行操作,就只完成取钱操作,先看代码。class Account { private String name; private int balance; public Account(String name, int balance) { this.name = name;...原创 2019-03-31 20:13:22 · 410 阅读 · 0 评论 -
面试必问:JDK7 超详细ConcurrentHashMap源码解析
ConcurrentHashMap是JUC下的包,可以认为是并发的HashMap,HashMap的升级版,关于底层是如何实现线程安全的,今天做一个解析。继承结构继承了AbstractMap,实现了ConcurrentMap接口和Serializable序列化接口。数据结构ConcurrentHashMap的底层数据结构是:数组+数组+链表正是得益于这种数据结构,可以实现高并发的功能,为...原创 2019-09-08 10:55:46 · 1568 阅读 · 3 评论 -
Java线程池基础
有什么用?在学一个东西之间,首先就是要知道这个东西怎么用?线程池就是装有多个线程的容器,为了避免重复创建线程销毁线程所带来的效率问题,线程池就出现了,当需要完成工作时,从线程池中取出空闲的线程去完成工作,完成后,再把线程退还到线程池中。比起我们一个一个new Thread,这种方式带来的好处是非常大的。基本结构,继承关系线程池有很多的类,很多的接口,了解他们之间的关系更有助于我们了解线程池...原创 2019-05-05 13:36:55 · 204 阅读 · 0 评论 -
公平性锁和非公平锁:ReentrantLock源码解析
在Java中为了保证代码同步时的安全问题,通常会使用线程同步机制,前面讲过了使用重量级锁Synchronized来保证线程安全,虽然Java对Synchronized做了优化,性能上已经有了大的提升,但是仍然会推荐使用Lock,也就是今天介绍的另外一种保证线程安全的方式:可重入锁使用可重入锁(ReentrantLock)的使用比较简单,而且非常灵活我们只需要new一个ReentrantLoc...原创 2019-05-05 20:34:37 · 647 阅读 · 0 评论