文章分类 - 面试
摘要:同样,HashMap是java面试中经常问到的一个知识点,基本都是和HashTable以及ConcurrentHashMap一起被问及,今天主要是讲讲HashMap是如何解决碰撞问题的?那么问题来了,什么是碰撞问题?这要先从HashMap底层的实现说起,进入它的源码类 public class Ha
阅读全文
摘要:Android面试大全(四大组件篇) Android面试大全(性能优化篇) Android面试大全(异常处理篇) Android面试大全(开源框架篇) Android面试大全(网络篇) Android面试大全(java篇) java基础 java三大特性 封装、继承、多态 多态实现原理 基本数据类型
阅读全文
摘要:Android学习 Android知识总结 Android面试 面试准备 程序员找工作 Github传送门 Java基础篇 java基本数据类型及所占字节数 8种基本数据类型 类型字节数bit数取值范围 byte 1 8 -128-127 boolean 1 8 true、false short 2
阅读全文
摘要:char是可以表示中文的这个问题点有3个考核点1 char是多少位的2 java用的是什么方式表示字符3 Unicode是用多少位表示的1的答案是16位的,2的答案是Unicode,3的答案是16位值得注意的是,2的答案并不是utf-8Unicode字符集有包含中文,并且char类型和Unicode
阅读全文
摘要:1.并发编程中的三个概念 在并发编程中, 需要了解线程的三个概念:原子性,可见性,有序性: 1.1.原子性 原子性:即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。 一个很经典的例子就是银行账户转账问题: 比如从账户A向账户B转1000元,那么必然包括2个操作:
阅读全文
摘要:概述 java.util包中的大部分容器都是非线程安全的,若要在多线程中使用容器,你可以使用Collections提供的包装函数:synchronizedXXX,将普通容器变成线程安全的容器。但该方法仅仅是简单地给容器使用同步,效率很低。因此并发大师Doug Lea提供了java.util.conc
阅读全文
摘要:目录 1. 概述 2. 为什么JUC需要提供并发容器? 3. JUC并发容器 4. 参考资料 目录 1. 概述 2. 为什么JUC需要提供并发容器? 3. JUC并发容器 4. 参考资料 正文 回到顶部 1. 概述 java cocurrent包提供了很多并发容器,在提供并发控制的前提下,通过优化,
阅读全文
摘要:java.util.concurrent.CountDownLatch 是一个并发构造,它允许一个或多个线程等待一系列指定操作的完成。 CountDownLatch 以一个给定的数量初始化。countDown() 每被调用一次,这一数量就减一。通过调用 await() 方法之一,线程可以阻塞等待这一
阅读全文
摘要:Semaphore翻译成字面意思为 信号量,Semaphore可以控同时访问的线程个数,通过 acquire() 获取一个许可,如果没有就等待,而 release() 释放一个许可。 acquire()用来获取一个许可,若无许可能够获得,则会一直等待,直到获得许可。 release()用来释放许可。
阅读全文
摘要:字面意思回环栅栏,通过它可以实现让一组线程等待至某个状态之后再全部同时执行。 java.util.concurrent.CyclicBarrier 类是一种同步机制,它能够对处理一些算法的线程实现同步。换句话讲,它就是一个所有线程必须等待的一个栅栏,直到所有线程都到达这里,然后所有线程才可以继续做其
阅读全文
摘要:ReadWriteLock也是一个接口,在它里面只定义了两个方法: public interface ReadWriteLock { /** * Returns the lock used for reading. * * @return the lock used for reading. */
阅读全文
摘要:java.util.concurrent包中的Exchanger类可用于两个线程之间交换信息。可简单地将Exchanger对象理解为一个包含两个格子的容器,通过exchanger方法可以向两个格子中填充信息。当两个格子中的均被填充时,该对象会自动将两个格子的信息交换,然后返回给线程,从而实现两个线程
阅读全文
摘要:几个线程都申请读锁,都能获取: import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.ReentrantReadWriteLock; /** * 几个线程都申请读锁,都能用 */ public class Ma
阅读全文
摘要:并发集合是原有集合框架的补充,为多线程并发程序提供了支持。主要有:BlockingQueue,ConcurrentMap,ConcurrentNavigableMap三个接口。 新的java.util.concurrent包可用的具体集合类中加入了BlockingQueue接口和5个阻塞队列类。阻塞
阅读全文
摘要:Semaphore: 类java.util.concurrent.Semaphore提供了一个计数信号量,从概念上讲,信号量维护了一个许可集,如有必要,在许可可用前会阻塞每一个acquire(),然后再获取该许可。每个release()添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际
阅读全文
摘要:在JDK5的并发包中有一个子包为java.concurrent.locks,它下面定义了三个接口Lock,ReadWriteLock,Condition,分别为重入锁,读写锁,锁条件判断 LOCK: Lock与java关键字(synchronized)具有相同的功能,但它更加灵活。Reentrant
阅读全文
摘要:Concurrent.util常用类CyclicBarrier使用:假设有只有的一个场景:每个线程代表一个跑步运动员,当运动员都准备好后,才一起出发,只要有一个人没有准备好,大家都等待。工作中场景:比如你多台机器想同时准备好了,再去干分布式计算等等。案例:public class UseCyclic
阅读全文
摘要:同步类容器概念理解 同步类容器都是线程安全的,但在某些场景下可能需要加锁来保护复合操作。复合类操作如:迭代(反复访问元素,遍历完容器中所有的元素)、跳转(根据指定的顺序找到当前元素的下一个元素)、以及条件运算。这些复合操作在多线程并发地修改容器时,可能会表现出意外的行为,最经典的便是Concurre
阅读全文
摘要:在java多线程中,我们知道可以使用synchronized关键字来实现线程间的同步互斥工作,那么其实还有一个更优秀的机制去完成这个“同步互斥”工作,他就是Lock对象,我们主要学习两种锁,重入锁和读写锁。他们具有比 synchronized更为强大的功能,并且有嗅探锁定、多路分支等功能。Reent
阅读全文
摘要:重入锁 Java中的重入锁(即ReentrantLock) 与JVM内置锁(即synchronized)一样,是一种排它锁。 ReentrantLock提供了多样化的同步,比如有时间限制的同步(定时锁),可以被Interrupt的同步,即中断锁 (synchronized的同步是不能Interrup
阅读全文

浙公网安备 33010602011771号