- 博客(168)
- 资源 (2)
- 收藏
- 关注
原创 共同学习Java源代码-多线程与并发-ConcurrentHashMap(二)
privatestaticfinalObjectStreamField[] serialPersistentFields = { newObjectStreamField("segments", Segment[].class), newObjectStreamField("segmentMask", Integer.TYPE),
2018-01-23 07:33:09
349
原创 共同学习Java源代码-数据结构-Deque
这个是双向队列public interface Deque extends Queue继承自Queue接口 void addFirst(E e);在双向队列最前端添加元素 void addLast(E e);在双向队列最末端添加元素 boolean offerFirst(E e);在双向队列最前端添加元素
2018-01-21 19:08:37
413
原创 共同学习Java源代码-多线程与并发-ConcurrentHashMap(一)
ConcurrentHashMap是每个Java学习者必看的类public class ConcurrentHashMap extends AbstractMap implements ConcurrentMap, Serializable 这个类继承了AbstractMap 类 实现了ConcurrentMap、Serializable接口 private static
2018-01-21 18:39:47
357
原创 共同学习Java源代码-多线程与并发-ConcurrentMap接口
这个接口是ConcurrentHashMap实现的接口 ConcurrentHashMap是开发者必须掌握的类 public interface ConcurrentMap extends Map这个接口继承自Map接口 @Override default V getOrDefault(Object key, V defaultValue) {
2018-01-20 17:15:22
389
原创 共同学习Java源代码-数据结构-PriorityQueue类(八)
private void heapify() { for (int i = (size >>> 1) - 1; i >= 0; i--) siftDown(i, (E) queue[i]); }这个方法是堆化的方法 我现在才搞明白PriorityQueue的存储方式是用数组存储二叉树 0下标为根节点 2n+1下标为左节点 2n+2下标为右节
2018-01-19 21:38:42
226
原创 共同学习Java源代码-数据结构-PriorityQueue类(七)
privatevoid siftUp(intk, E x) { if (comparator != null) siftUpUsingComparator(k, x); else siftUpComparable(k, x);}这是siftUp方法 判断comparator属性是否为空如果不为空就调用siftUpUsingCo
2018-01-19 07:21:27
233
原创 共同学习Java源代码-数据结构-PriorityQueue类(六)
publicint size() { returnsize;}size方法返回size publicvoid clear() { modCount++; for (inti = 0; i size; i++) queue[i] = null; size = 0;} 这个是清除所有元素的方法修改次数自增 遍历数组 将每个元
2018-01-19 07:20:49
198
原创 共同学习Java源代码-数据结构-PriorityQueue类(五)
public Iterator iterator() { return new Itr(); }这个是迭代器方法 private final class Itr implements Iterator {这个是实现了迭代器接口的内部迭代器类 private int cursor = 0;这个是迭代光标 pr
2018-01-14 17:41:47
203
原创 共同学习Java源代码-数据结构-PriorityQueue类(四)
public boolean remove(Object o) { int i = indexOf(o); if (i == -1) return false; else { removeAt(i); return true; } }这
2018-01-14 16:30:14
210
原创 共同学习Java源代码-数据结构-PriorityQueue类(三)
private void grow(int minCapacity) { int oldCapacity = queue.length; int newCapacity = oldCapacity + ((oldCapacity (oldCapacity + 2) :
2018-01-11 14:24:29
193
原创 共同学习Java源代码-数据结构-PriorityQueue类(二)
private void initFromPriorityQueue(PriorityQueue c) { if (c.getClass() == PriorityQueue.class) { this.queue = c.toArray(); this.size = c.size(); } else {
2018-01-11 11:04:35
191
原创 共同学习Java源代码-数据结构-PriorityQueue类(一)
这是优先队列 public class PriorityQueue extends AbstractQueue implements java.io.Serializable这是类的描述 继承自 AbstractQueue 实现了Serializable接口 private static final int DEFAULT_INITIAL_CAPACITY = 11;
2018-01-10 10:28:42
243
原创 共同学习Java源代码-多线程与并发-ThreadPoolExecutor类(十六)
这是ThreadPoolExecutor最后一篇博客 内容是拒绝策略 public static class CallerRunsPolicy implements RejectedExecutionHandler { public CallerRunsPolicy() { } public void rejectedExecution(Runnabl
2018-01-09 12:55:24
205
原创 共同学习Java源代码-多线程与并发-ThreadPoolExecutor类(十五)
public String toString() { long ncompleted; int nworkers, nactive; final ReentrantLock mainLock = this.mainLock; mainLock.lock(); try { ncompl
2018-01-09 10:57:09
220
原创 共同学习Java源代码-多线程与并发-ThreadPoolExecutor类(十四)
public void purge() { final BlockingQueue q = workQueue; try { Iterator it = q.iterator(); while (it.hasNext()) { Runnable r = it.next();
2018-01-09 10:27:06
243
原创 共同学习Java源代码-多线程与并发-ThreadPoolExecutor类(十三)
public void allowCoreThreadTimeOut(boolean value) { if (value && keepAliveTime throw new IllegalArgumentException("Core threads must have nonzero keep alive times"); if
2018-01-03 16:35:23
320
原创 共同学习Java源代码-多线程与并发-ThreadPoolExecutor类(十二)
public void setThreadFactory(ThreadFactory threadFactory) { if (threadFactory == null) throw new NullPointerException(); this.threadFactory = threadFactory; }
2018-01-03 16:01:50
200
原创 共同学习Java源代码-多线程与并发-ThreadPoolExecutor类(十一)
public boolean isTerminating() { int c = ctl.get(); return ! isRunning(c) && runStateLessThan(c, TERMINATED); }判断是否在终止的方法就是获取ctl 判断状态不是RUNNING 并且数值小于TERMINATED publ
2018-01-02 16:45:15
214
原创 共同学习Java源代码-多线程与并发-ThreadPoolExecutor类(十)
public void execute(Runnable command) { if (command == null) throw new NullPointerException(); int c = ctl.get(); if (workerCountOf(c) if (addWork
2018-01-02 16:34:27
222
原创 共同学习Java源代码-并发与锁-AbstractOwnableSynchronizer
这个抽象类是AQS的父类public abstract class AbstractOwnableSynchronizer implements java.io.Serializable实现Serializable接口 protected AbstractOwnableSynchronizer() { }默认构造方法 private tran
2018-01-01 17:21:37
1114
原创 共同学习Java源代码-多线程与并发-ThreadPoolExecutor类(九)
public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit,
2018-01-01 16:59:35
179
原创 共同学习Java源代码-多线程与并发-ThreadPoolExecutor类(八)
private Runnable getTask() { boolean timedOut = false; // Did the last poll() time out? for (;;) { int c = ctl.get(); int rs = runStateOf(c); i
2017-12-31 18:46:20
232
原创 共同学习Java源代码-数据结构-AbstractQueue
public abstract class AbstractQueue extends AbstractCollection implements Queue这个抽象类继承自AbstractCollection类 实现Queue接口 protected AbstractQueue() { }无参构造方法 protected修饰 pu
2017-12-30 17:08:05
272
原创 共同学习Java源代码-多线程与并发-ThreadPoolExecutor类(七)
private void addWorkerFailed(Worker w) { final ReentrantLock mainLock = this.mainLock; mainLock.lock(); try { if (w != null) workers.remove(w);
2017-12-30 16:50:49
151
原创 共同学习Java源代码-多线程与并发-ThreadPoolExecutor类(六)
private List drainQueue() { BlockingQueue q = workQueue; ArrayList taskList = new ArrayList(); q.drainTo(taskList); if (!q.isEmpty()) { for (Runnable r
2017-12-29 15:54:25
234
原创 共同学习Java源代码-多线程与并发-ThreadPoolExecutor类(五)
private void interruptWorkers() { final ReentrantLock mainLock = this.mainLock; mainLock.lock(); try { for (Worker w : workers) w.interruptIfSt
2017-12-28 22:12:00
204
原创 共同学习Java源代码-并发与锁-Lock接口、Condition接口
public interface Lock可重入锁的接口 void lock();锁定代码段的方法 void lockInterruptibly() throws InterruptedException;当前线程没有被打断的情况下 才能获取锁 boolean tryLock();尝试获取锁的方法 boolea
2017-12-24 17:22:15
203
原创 共同学习Java源代码-多线程与并发-ThreadPoolExecutor类(四)
private void advanceRunState(int targetState) { for (;;) { int c = ctl.get(); if (runStateAtLeast(c, targetState) || ctl.compareAndSet(c, ctlOf(targ
2017-12-24 16:27:32
154
原创 共同学习Java源代码-多线程与并发-ThreadPoolExecutor类(三)
private static final RuntimePermission shutdownPerm = new RuntimePermission("modifyThread");调用shutdown和shutdownNow的权限这是Worker类 实现了 private final class Worker extends Abs
2017-12-23 15:58:39
207
原创 共同学习Java源代码-多线程与并发-ThreadPoolExecutor类(二)
private final BlockingQueue workQueue;这个是阻塞队列 装的是工作线程 private final ReentrantLock mainLock = new ReentrantLock();这个是可重入锁 锁的是下面的worker set private final HashSet workers = new Ha
2017-12-22 17:21:00
183
原创 共同学习Java源代码-多线程与并发-ThreadPoolExecutor类(一)
这是线程池的一个典型实现 public class ThreadPoolExecutor extends AbstractExecutorService 继承自AbstractExecutorService private final AtomicInteger ctl = new AtomicInteger(ctlOf(RUNNING, 0));这个是原子变量
2017-12-22 16:55:57
337
原创 共同学习Java源代码-多线程与并发-AbstractExecutorService类(三)
public List> invokeAll(Collection> tasks) throws InterruptedException { if (tasks == null) throw new NullPointerException(); ArrayList> futures = new ArrayList
2017-12-21 17:30:13
186
原创 共同学习Java源代码-多线程与并发-AbstractExecutorService类(二)
private T doInvokeAny(Collection> tasks, boolean timed, long nanos) throws InterruptedException, ExecutionException, TimeoutException { if (tasks == n
2017-12-21 17:29:32
212
原创 共同学习Java源代码-多线程与并发-BlockingQueue接口
这是阻塞队列的接口 public interface BlockingQueue extends Queue继承自Queue接口 boolean add(E e);添加元素方法 长度超出了会抛异常 boolean offer(E e);添加元素的另一种方法 添加失败就返回false 官方更建议用这个 void put
2017-12-20 16:52:25
168
原创 共同学习Java源代码-多线程与并发-CompletionService接口和ExecutorCompletionService类
这个接口用来将生产新异步任务和消费已完成任务进行解耦 Future submit(Callable task); Future submit(Runnable task, V result); Future take() throws InterruptedException; Future poll(); Future p
2017-12-20 16:09:24
200
原创 共同学习Java源代码-多线程与并发-AbstractExecutorService类(一)
public abstract class AbstractExecutorService implements ExecutorService这个类实现了ExecutorService接口 protected RunnableFuture newTaskFor(Runnable runnable, T value) { return new Future
2017-12-20 15:43:56
195
原创 共同学习Java源代码-多线程与并发-FutureTask类(三)
static final class WaitNode { volatile Thread thread; volatile WaitNode next; WaitNode() { thread = Thread.currentThread(); } }这个是静态终态内部类 将其他等待线程存储在这个链表结构的类里
2017-12-18 16:21:00
222
原创 共同学习Java源代码-多线程与并发-FutureTask类(二)
protected void set(V v) { if (UNSAFE.compareAndSwapInt(this, stateOffset, NEW, COMPLETING)) { outcome = v; UNSAFE.putOrderedInt(this, stateOffset, NORMAL); // final
2017-12-17 16:42:29
324
原创 共同学习Java源代码-多线程与并发-FutureTask类(一)
这是个可以取消的未来异步任务。public class FutureTask implements RunnableFuture 这个类继承自RunnableFuture 实现了RunnableFuture接口 private volatile int state; private static final int NEW = 0;
2017-12-16 16:49:06
215
原创 共同学习Java源代码-多线程与并发-Future、RunnableFuture接口
这是进行异步计算的接口 public interface Future boolean cancel(boolean mayInterruptIfRunning);这个方法是取消执行这个异步任务的方法 参数为true代表任务可以被打断 boolean isCancelled();这个方法是判断这个任务是否被取消的方法
2017-12-16 16:02:08
255
带事务回滚测试的SSH整合小案例(Spring 3.2+Hibernate 3.3+Struts 2.3)
2013-05-27
省市区三级级联(Ajax+JSP+Servlet+JDBC+Oracle)
2012-11-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人