
a
文章平均质量分 76
仰望月亮一刻钟
HelloWorld
展开
-
Java静态变量和成员变量的区别
复习下基础,发现忘了好多。。。主要是生命周期的问题!!!静态变量是随着类的加载创建的;成员变量是new一个对象时创建的;静态变量先于成员变量创建;静态变量的生命周期内会有很多成员变量的开始和结束;因此不难理解静态方法先创建后结束,且不能调用提前于自己结束生命周期的成员变量;...原创 2018-07-18 14:30:33 · 487 阅读 · 0 评论 -
四种线程池的学习小结
1、Executors.newFixedThreadPool()方法,该方法返回一个固定数量的线程池,该方法的线程池数始终不变,当有一个任务提交时,若线程池有空闲,则立即执行该任务,若没有空闲的线程,则会被暂缓在一个任务队列中等待有空闲的线程去执行。2、Executors.newSingleThreadExecutor()方法,创建一个线程的线程池,访问时若空闲则执行,否则任务被暂缓在线程队列...转载 2018-07-27 15:09:03 · 128 阅读 · 0 评论 -
volatile笔记
volatile修饰后使访问直接去内存中获取成员变量,实现了内存可见性;原创 2018-07-27 10:44:39 · 110 阅读 · 0 评论 -
AtomicInteger是什么
AtomicInteger是一个线程安全的具有原子性的能返回int类型的对象;原创 2018-07-27 10:34:24 · 779 阅读 · 1 评论 -
自解锁读写锁ReentrantReadWriteLock、ReadLock、WriteLock
private ReentrantReadWriteLock rwLock = new ReentrantReadWriteLock();private ReadLock readLock = rwLock.readLock();private WriteLock writeLock = rwLock.writeLock();读读共享,写写互斥多个读的锁可以共同进行,多个写的锁必须同...原创 2018-07-30 16:53:18 · 259 阅读 · 0 评论 -
自解锁Lock、等待Condition 简记
private Lock lock = new ReentrantLock();private Condition condition = lock.newCondition();public void method1(){ try { lock.lock(); Thread.sleep(1000); condition.await(); System.out...原创 2018-07-30 16:38:22 · 156 阅读 · 0 评论 -
Semaphore
只能5个线程同时访问 final Semaphore semp = new Semaphore(5); ①获取1个许可semp.acquire(1);②访问完后,释放3个 semp.release(3);仨、释放个 semp.release();————①的作用是5/1=5次,也就是说最多能同时5个线程访问,②作用是释放3个线程执行;一般要正常工作release数值要大于ac...原创 2018-07-30 12:18:32 · 795 阅读 · 0 评论 -
CountDownLatch与CyclicBarrier、Future
1、final CountDownLatch countDown = new CountDownLatch(2);当参数是2的时候一个countDown.await();需要两个countDown.countDown();唤醒——一个线程或者两个线程皆可2、CyclicBarrier barrier = new CyclicBarrier(3);当参数是3时需要三个线程才能唤醒三个...转载 2018-07-30 09:38:25 · 317 阅读 · 0 评论 -
synchronized、wait()、lock.notify()概括
当一个线程获取synchronized走到wait()方法后会进入线程等待,直到该线程调用另一个notify()方法或者另一个线程调用该synchronized的一个notify后,第一个线程等待会被唤醒;...原创 2018-07-26 10:53:56 · 1304 阅读 · 0 评论 -
队列学习小结
今天复习了队列,做个小结,方便自己回顾,有不足的还请路过的大侠多多指教,纯属个人学习,谢谢;1、PriorityBlockingQueue优先级阻塞队列,每次都是最小的id在最前面,如下所示:[0, 2, 1, 5, 4] ---原队列0 ---被take()1个侯[1, 2, 4, 5]1 ---被...原创 2018-07-25 18:03:42 · 641 阅读 · 0 评论 -
LinkedBlockingDeque
双向队列两边入两边出提供方法addfist(),offerlast(),pollfist(),peeklast().....原创 2018-07-25 11:12:35 · 130 阅读 · 0 评论 -
linkedlist和arraylist的区别
可以这样理解1、linklist是一个链表,头尾相接那种,add数据得速度快,但查询需要指针速度会慢;2、arrylist是一个数组,增加速度慢,下标形式查询速度快; ...原创 2018-07-19 17:08:16 · 130 阅读 · 0 评论 -
hashmap支持多线程吗
java.util.ConcurrentModificationException at java.util.HashMap$HashIterator.nextNode(HashMap.java:1429) at java.util.HashMap$EntryIterator.next(HashMap.java:1463) at java.util.HashMap$Entr...原创 2018-07-24 14:51:11 · 563 阅读 · 0 评论 -
Java 如何自动创建多个Thread 线程
Thread threads[]=new Thread[100];for(int i=0;i<100;i++){threads[i]=new Thread(//put some runnable here );threads[i].start();}转载 2018-07-24 09:57:03 · 4810 阅读 · 0 评论 -
Java在new一个线程时使用的变量一定要用final修饰吗
这个是生命周期问题,举例说明:public static void main(String args[]){final MyQueue mq = new MyQueue(5);Thread t1 = new Thread(new Runnable() { @Override public void run() {try { Thread.sleep(100)...原创 2018-07-18 14:40:35 · 6035 阅读 · 0 评论 -
ThreadPoolExecutor参数介绍
1、MyRejected implements RejectedExecutionHandler 2、转载 2018-07-27 16:36:42 · 247 阅读 · 0 评论