2019独角兽企业重金招聘Python工程师标准>>>
一、非阻塞式线程安全列表 ConcurrentLinkedDeque
ConcurrentLinkedDeque
}System.out.println(deque.size()); //100000
deque.getFirst(); deque.getLast();
//返回列表中的第一个和最后一个。元素不会被移除,如果列表为空将抛出NoSuchElementException
deque.peek();deque.peekFirst();deque.peekLast();
//返回中第一个和最后一个,元素不会被移除,如果列表为空返回null
deque.pollLast();deque.pollFirst();
//返回列表中第一个和最后一个,并移除元素。不会抛出异常
deque.remove();deque.removeFirst();deque.removeLast();
//返回第一个和最后一个,并移除元素。列表为空将抛出异常
二、阻塞式线程列表
LinkedBlockingDeque
阻塞与非阻塞的主要区别:阻塞式列表在插入和删除操作时,如果列表已满或为空,操作不被立即执行,而是将调用这个操作的线程阻塞
直到操作可以执行成功。
三、按优先级排序的阻塞式线程安全列表 PriorityBlockingQueue
PriorityBlockingQueue
PriorityBlockingQueue 中的每个元素都要实现 Comparable接口。元素越大越靠后
特性:它是阻塞数据结构。当它的方法被调用并且不能立即执行时,调用这个方法的线程将被阻塞直到方法执行成功。
四、带延迟元素的线程安全列表
DelayQueue
1.它可以存放带有激活日期的元素,当从该列表取取值时,未来的元素将被忽略
2.它的元素必须实现 Delayed 接口
五、并发随机数 ThreadLocalRandom
ThreadLocalRandom.current().nextInt();