我试图找出如何在Java 8并行流中复制ThreadLocal值.
所以如果我们考虑这个:
public class ThreadLocalTest {
public static void main(String[] args) {
ThreadContext.set("MAIN");
System.out.printf("Main Thread: %s\n", ThreadContext.get());
IntStream.range(0,8).boxed().parallel().forEach(n -> {
System.out.printf("Parallel Consumer - %d: %s\n", n, ThreadContext.get());
});
}
private static class ThreadContext {
private static ThreadLocal<String> val = ThreadLocal.withInitial(() -> "empty");
public ThreadContext() {
}
public static String get() {
return val.get();
}
public static void set(String x) {
ThreadContext.val.set(x);
}
}
}
Run Code Online (Sandbox Code Playgroud)
哪个输出
Main Thread: MAIN
Parallel Consumer - 5: MAIN
Parallel Consumer - 4: MAIN
Parallel …Run Code Online (Sandbox Code Playgroud) 我试图用RactiveJS利用代理事件(on-mousedown,up,move,out)实现一个简单的可拖动DIV
以下JSFiddle工作正常,但是当用户移动鼠标太快时,拖动停止.这只是因为我的案例中的mouseevent处理程序位于DIV标记而不是正文或文档元素上.我的最终想法是创建一个滑块组件,但我正在寻求提供最佳的用户体验,并使这项工作更像JQuery的可拖动.
模板:
<div class="rect {{drag ? 'dragging' : ''}}"
on-mousedown="startDrag"
on-mouseup="stopDrag"
on-mouseout="stopDrag"
on-mousemove="drag"
style="top:{{top}}px; left:{{left}}px;">
</div>
Run Code Online (Sandbox Code Playgroud)
反应实例:
var ractive = new Ractive({
el: "#content",
template: "#template",
data: {left:20,top:80}
});
ractive.on({
startDrag : function (event) {
this.set({
'drag': true,
'mouseX': event.original.clientX - this.get('left'),
'mouseY': event.original.clientY - this.get('top')
});
},
stopDrag : function (event) {
this.set('drag', false);
},
drag : function (event) {
if(this.get('drag')) {
var x = event.original.clientX,
y = event.original.clientY;
this.set({
top: y - this.get('mouseY') ,
left: …Run Code Online (Sandbox Code Playgroud)