![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
xiaoluo5238
从现在开始
展开
-
java 锁的使用
/** * 锁的使用很简单 * 1:申请锁 / 锁定代码 * 2:释放锁可以代替synchronize */public class ReentrantLockTest { Lock lock = new ReentrantLock();//重入锁 void m1(){ try { System.out.println("申请...原创 2020-02-16 20:51:47 · 303 阅读 · 0 评论 -
java多线程学习
同步关键字synchronized注:本博文synchronized 有时会简写成 syncsynchronized 同步关键字,自动释放锁,锁住的是对象,不是代码块sync 声明在方法名上,锁定的是this对象(调用方法的那个对象)sync 锁是可重入的(此线程可多次访问此对象的锁) 本方法再次调用本方法 本方法调用父类方法死锁的模拟 线程...原创 2020-02-18 21:40:45 · 150 阅读 · 0 评论 -
java多线程 Future 模式
public static void main(String[] args)throws Exception{ Callable c1 = new Callable() { @Override public Object call() throws Exception { System.out.println("task1 sta...原创 2018-08-23 10:17:48 · 165 阅读 · 0 评论 -
java 多线程 CyclicBarrier
CyclicBarrier 循环栅栏 ,主要方法如下:new CyclicBarrier(num);//设置栅栏数new CyclicBarrier(num,Runnable)//设置栅栏数(目标数),并且达到目标后做的事情cyclicBarrier.await();//到达栅栏,让线程等待,等到有足够多到达栅栏的任务才会继续往下走。栅栏是循环的。示例: public...原创 2020-02-18 21:15:37 · 116 阅读 · 0 评论 -
java 多线程队列
java队列方法很简单,就简单的 新增 add()/offer() 、 拿出 poll()、查看 peek(),这几种操作。队列分为 阻塞的和非阻塞的,基本的用法都很简单,但是确是非常灵活。Queue add();//如果队列已满,会抛出错误 offer();//相当于add,如果队列已满,返回false remove();//删除第一个元素,集合为空时调用抛出异...原创 2020-02-18 14:46:37 · 1865 阅读 · 0 评论 -
java List和Vector的线程安全性比较
List 线程不安全,其中的操作不是原子操作Vector 是线程安全的,其中的操作有sync修饰,为同步操作/** * 对比 list 和 vector 线程安全 */public class ListVectorSaveTest { ArrayList<String> dataList = new ArrayList<>();//arrayLis...原创 2020-02-17 22:32:52 · 569 阅读 · 0 评论 -
java ThreadLocal 使用
ThreadLocal 线程内 threadLocal.set(), 只是当前线程能 threadLocal.get() 到 只能设置一个对象,可set map对象。 容易造成内存泄漏,每次使用完ThreadLocal,都调用它的remove()方法,清除数据/** * ThreadLocal的set的变量只是当前线程可看 * ThreadLocal set的...原创 2020-02-17 16:22:17 · 157 阅读 · 0 评论 -
java Lock-condition 模拟生产者消费者模式
/** * Condition putCondition = lock.newCondition();//实例 * putCondition.await();//与Object.wait方法一样,都是要与while共同使用,使线程等待,释放锁, 直到putCondition.signal()或putCondition.signalAll(...原创 2020-02-17 15:40:55 · 190 阅读 · 0 评论 -
java wait-notify(notifyAll)实现生产者和消费者模式
wait 让线程进入等待状态,同时释放锁,直到其它线程notify时,它才会重新运行。Object的方法,wait需要和while共用 notify 唤醒一个线程,但是不会释放锁,如果本身拿着对象的锁,wait也不会唤醒其他线程 notifyAll 唤醒所有wait的线程,所以这里也是说要用wait和while搭配的原因。/** * * * wait需要和while一起使用,不...原创 2020-02-17 14:44:11 · 259 阅读 · 0 评论 -
java多线程-线程间的通讯-门栓(减数器)
/** * 线程间的通讯 -门栓 或 门闸 或 减数器 * 使用方法很简单 * new CountDownLatch(3);//声明定义 多少个门栓,如果有3个,那个需要调用3次countDown()方法后,才能执行到await()方法 * countDownLatch.await(); //等待门栓全部打开,才会执行 * countDownLatch.countDown();//...原创 2020-02-16 11:20:55 · 481 阅读 · 0 评论 -
java线程池简单写法-缓存线程池
线程池写法public class ExecutorServiceManager { private static ExecutorService executorService; public static synchronized ExecutorService getInstance(){ if(executorService == null){ ...原创 2018-08-23 10:49:11 · 1514 阅读 · 1 评论 -
java多线程 信号量使用
java多线程中的信号量是保证同一时间内最大的访问数量(线程)。例子:public class MySemaphore { private static final Semaphore semaphore = new Semaphore(2);//运行同时拥有信号量的现场数 public static class SThread1 extends Thread{ ...原创 2018-05-14 15:46:02 · 1364 阅读 · 0 评论