Java 并发编程
文章平均质量分 80
想跌破记忆寻找你
这个作者很懒,什么都没留下…
展开
-
java多线程问题
1、多线程有什么用?一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,还管它有什么用?在我看来,这个回答更扯淡。所谓"知其然知其所以然","会用"只是"知其然","为什么用"才是"知其所以然",只有达到"知其然知其所以然"的程度才可以说是把一个知识点运用自如。OK,下面说说我对这个问题的看法:(1)发挥多核CPU的优势随着工业的进转载 2017-01-11 23:14:47 · 344 阅读 · 0 评论 -
9、AQS实现重入锁
什么是重入锁 可重入锁就是当前持有锁的线程能够多次获取该锁,无需等待什么是AQS AQS是JDK1.5提供的一个基于FIFO等待队列实现的一个用于实现同步器的基础框架,这个基础框架的重要性可以这么说,JCU包里面几乎所有的有关锁、多线程并发以及线程同步器等重要组件的实现都是基于AQS这个框架。AQS的核心思想是基于volatile int state这样的一个属性同时配合Unsafe工具对其...原创 2018-04-18 14:00:32 · 1004 阅读 · 0 评论 -
8、Lock
Lock应用场景解决获取锁的等待问题读写锁的分离其它锁的操作Synchronized和Lock异同类型不同:lock是接口,是jdk层面的实现;synchronized是java关键字,是jvm层面的实现,是java的内置特性;这也造成了在锁管理上的不同释放锁的方式:lock在编码的过程操作锁,需要主动调用方法释放锁,配合try模块,在finally中释放锁;synchronized由于是jvm的...原创 2018-04-18 11:50:14 · 1390 阅读 · 0 评论 -
6、volatile原理与使用
摘要:Java的volatile关键字对效率的影响Java关键字用于将一个变量标记为“存储在内存中的变量”。更准确的说,意思就是每一次对volatile标记的变量进行读取的时候,都是直接从电脑的主内存进行的,而不是从cpu的cache中,而且每个对volatile变量的写入操作,都会被直接写入到主存里,而不是只写Java关键字用于将一个变量标记为“存储在内存中的变量”。更准确的说,意思就是每一次对...转载 2018-04-12 14:58:04 · 701 阅读 · 1 评论 -
7、CAS机制
锁主要存在的问题在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。一个线程持有锁会导致其它所有需要此锁的线程挂起。如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置,引起性能风险。CAS 在JDK1.5之前。Java主要靠synchronized这个关键字保证同步,已解决多线程下的线程不安全问题,但是这会导致锁的发生,会引发一些个性能问题。 ...转载 2018-04-17 17:21:26 · 1245 阅读 · 0 评论 -
3、线程带来的风险
线程安全问题从字节码的角度看线程安全性问题多线程环境下多个线程共享一个资源对资源进行非原子性问题线程活跃性问题 1、死锁 产生死锁的原因系统资源不足进程运行推进的顺序不合适资源分配不当 关于死锁出现的必要条件互斥条件:一个资源每次只能被一个进程使用。请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。循环等待条...原创 2018-03-27 15:07:55 · 255 阅读 · 0 评论 -
2、深入理解线程池
为何使用线程池 在并发情况下,线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁的创建线程和销毁线程需要时间,从而大大的降低系统的效率线程池讲解 ThreadPoolExecutor、AbstractExecutorService、ExecutorService和Executor之间的关系Executor是一个顶层接口,它里面只声明了一个方法execute(Runn...原创 2018-03-27 14:28:01 · 345 阅读 · 0 评论 -
5、JAVA 单例模式(线程安全性)
java中的单例模式是一种广泛使用的设计模式。单例模式的主要作用是保证在java程序中,某个类只有有一个实例存在单例模式1、饿汉模式public class Singleton{ private static Singleton instance = new Singleton(); private Singleton(){} public static Singleton newIn...原创 2018-03-30 16:30:14 · 331 阅读 · 0 评论 -
4、Synchronized 保证线程安全的原理
理论层面 Synchronized 可以保证方法或者代码在运行时,同一时刻只有一个方法可以进入到临界区,同时它还可以保证共享变量的内存可见性 java中每一个对象都可以作为锁,这是synchronized实现同步的基础普通同步方法,锁是当前对象的实例静态同步方法,锁是当前类的class对象同步方法快,锁是括号里面的对象 当一个线程访问同步代码块时,首先需要先获取锁才能执行同步代码块,...转载 2018-03-29 22:34:20 · 1824 阅读 · 0 评论 -
1、线程的状态以及各状态之间的转换
线程状态介绍在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)、死亡(Dead)5中状态新建状态,当程序使用new关键字创建了一个线程之后,该线程就处于新建状态,此时仅由JVM为其分配内存,并初始化其成员变量的值就绪状态,当线程对象调用了start()方法之后,该线程处于就绪状态。Java虚拟机会为其创建方法调用栈和程序计数器,等待...原创 2018-03-23 14:25:09 · 4528 阅读 · 0 评论 -
多线程
0.Java 中多线程同步是什么?在多线程程序下,同步能控制对共享资源的访问。如果没有同步,当一个 Java 线程在修改一个共享变量时,另外一个线程正在使用或者更新同一个变量,这样容易导致程序出现错误的结果。1.解释实现多线程的几种方法?一 Java 线程可以实现 Runnable 接口或者继承 Thread 类来实现,当你打算多重继承时,优先选择实现 Runnable。2.Thr原创 2016-04-11 13:21:21 · 335 阅读 · 0 评论 -
线程试题
1) 什么是线程?线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。Java在语言层面对多线程提供了卓越的支持,它也是一个很好的卖点。欲了解更多详细信息请点击这里。2) 线程和进程有什么区别?原创 2016-11-07 15:54:00 · 2087 阅读 · 0 评论 -
10、Condition的使用及原理解析
Condition的执行方式,是当线程1中调用await()方法后,线程1释放锁,等待唤醒 线程2获取到锁后,执行后调用condition的signal方法,唤醒线程1,线程1恢复执行 Condition是一个多线程间协调通信的工具类,使得某个,或者某些线程一起等待某个条件(Condition),只有当该条件具备( signal 或者 signalAll方法被带调用)时,这些等...原创 2018-04-18 15:22:19 · 11082 阅读 · 8 评论