1052 public void forEach(Consumer<? super E> action) {
1053 Objects.requireNonNull(action);
1054 forEachFrom(action, head);
1055 }
1056
1057 // VarHandle mechanics
1058 private static final VarHandle HEAD;
1059 private static final VarHandle TAIL;
1060 static final VarHandle ITEM;
1061 static final VarHandle NEXT;
1062 static {
1063 try {
1064 MethodHandles.Lookup l = MethodHandles.lookup();
1065 HEAD = l.findVarHandle(ConcurrentLinkedQueue.class, "head",
1066 Node.class);
1067 TAIL = l.findVarHandle(ConcurrentLinkedQueue.class, "tail",
1068 Node.class);
1069 ITEM = l.findVarHandle(Node.class, "item", Object.class);
1070 NEXT = l.findVarHandle(Node.class, "next", Node.class);
1071 } catch (ReflectiveOperationException e) {
1072 throw new Error(e);
1073 }
1074 }
1075 }
|
1052 public void forEach(Consumer<? super E> action) {
1053 Objects.requireNonNull(action);
1054 forEachFrom(action, head);
1055 }
1056
1057 // VarHandle mechanics
1058 private static final VarHandle HEAD;
1059 private static final VarHandle TAIL;
1060 static final VarHandle ITEM;
1061 static final VarHandle NEXT;
1062 static {
1063 try {
1064 MethodHandles.Lookup l = MethodHandles.lookup();
1065 HEAD = l.findVarHandle(ConcurrentLinkedQueue.class, "head",
1066 Node.class);
1067 TAIL = l.findVarHandle(ConcurrentLinkedQueue.class, "tail",
1068 Node.class);
1069 ITEM = l.findVarHandle(Node.class, "item", Object.class);
1070 NEXT = l.findVarHandle(Node.class, "next", Node.class);
1071 } catch (ReflectiveOperationException e) {
1072 throw new ExceptionInInitializerError(e);
1073 }
1074 }
1075 }
|