java线程
Thomas@617
一位从事互联网行业,代码的搬运工
展开
-
java Lock锁讲解
感谢作者https://www.cnblogs.com/dolphin0520/p/3923167.htmlLock接口中方法public interface Lock { //加锁 void lock(); //可中断锁,在等待获取锁的过程,是可以响应中断的,一旦获取到 //锁,将不能中断 void lockInterruptibly() t...转载 2019-11-29 15:43:48 · 194 阅读 · 0 评论 -
ThreadPoolExecutor 线程池开发的使用
转载:https://www.cnblogs.com/liran123/archive/2018/07/01/9251249.html线程池,首先要明白为什么要是用线程池,这里引入网上一个比较好的案例:--在实际使用中,服务器在创建和销毁线程上花费的时间和消耗的系统资源都相当大,甚至可能要比在处理实际的用户请求的时间和资源要多的多。除了创建和销毁线程的开销之外,活动的线程也需要消耗系统资源...原创 2019-11-28 19:00:13 · 107 阅读 · 0 评论 -
线程 notify和notifyAll ,wait()
1.notify 和notifyAll 是唤醒阻塞的线程,一个是指唤醒其中一个,一个是唤醒所有阻塞的线程,多个阻塞的线程是唤醒其中的一个,跟操作系统的实现有关。唤醒之后会继续执行上次wait代码的地方,继续向下执行2.wait,方法是会释放已经获得的锁,方法要跟同步字段一起使用,...原创 2019-07-02 18:17:31 · 76 阅读 · 0 评论 -
java 多线程锁 lock Condition
接口提供的方法public interface Condition {await()方法会使当前线程等待,同时释放当前锁,当其他线程中使用signal()时或者signalAll()方法时,线程会重新获得锁并继续执行。或者当线程被中断时,也能跳出等待。这和Object.wait()方法很相似condition.await()方法必须在lock.lock()与lock.unl...原创 2019-07-08 21:58:15 · 151 阅读 · 0 评论 -
java 多线程 Exchanger 之间数据交换
ExecutorService service = Executors.newCachedThreadPool(); final Exchanger exchanger = new Exchanger(); service.execute(new Runnable(){ public void run() { try { ...原创 2019-07-08 22:16:11 · 128 阅读 · 0 评论 -
java 多线程 可重入锁RentrantLock
1.业务场景,实现一个排队功能,比如 1,2,3 执行完成之后,重新从1,2,3 继续执行下去public static void main(String[] args) { final Business business=new Business(); new Thread(new Runnable() { @Override...原创 2019-07-03 18:25:12 · 204 阅读 · 0 评论 -
java多线程volatile,synchronized
1.特殊域变量(volatile)实现线程同步,只能修饰类中变量上,不能为final修饰a.volatile关键字为域变量的访问提供了一种免锁机制,b.使用volatile修饰域相当于告诉虚拟机该域可能会被其他线程更新,c.因此每次使用该域就要重新计算,而不是使用寄存器中的值d.volatile不会提供任何原子操作,它也不能用来修饰final类型的变量;e.volatil...原创 2019-07-18 13:11:01 · 114 阅读 · 0 评论 -
java 多线程同步工具
CyclicBarrier 循环等待只有三个都满足才继续执行public static void main(String[] args) { ExecutorService service = Executors.newCachedThreadPool(); final CyclicBarrier cb = new CyclicBarrier(3); for(int i...原创 2019-07-18 13:13:13 · 111 阅读 · 0 评论