小编cyb*_*_ua的帖子

为什么此SynchronizedList线程包装器是安全的?

我正在阅读“ Java并发实践”,这种情况对我来说还不太清楚。为什么这段代码是ThreadSafe?

@ThreadSafe
public class ListHelper<E> {
    public List<E> list =
        Collections.synchronizedList(new ArrayList<E>());
    ...
    public boolean putIfAbsent(E x) {
        synchronized (list)  {
            boolean absent = !list.contains(x);
            if (absent)
} }
}

Run Code Online (Sandbox Code Playgroud)

我们锁定SynchronizedList 列表的实例, 但在使用内部对象的内部 final Object mutex; // Object on which to synchronize

  public void add(int index, E element) {
            synchronized (mutex) {list.add(index, element);}
        }
Run Code Online (Sandbox Code Playgroud)

我们仍然在两个不同的对象上具有锁。为什么安全呢?

java concurrency

3
推荐指数
1
解决办法
48
查看次数

将光标移动到输入的末尾

我的 input 和 setSelectionRange 方法有问题。问题是我在最后设置了光标位置:

input.setSelectionRange(input.value.length,input.value.length );
Run Code Online (Sandbox Code Playgroud)

光标移动到结尾,但文本保持在同一位置。它适用于 Firefox,但不适用于 Chrome。

input.setSelectionRange(input.value.length,input.value.length );
Run Code Online (Sandbox Code Playgroud)
var input = document.querySelector("input");
input.onclick = function (){
  this.setSelectionRange(this.value.length,this.value.length )
}
Run Code Online (Sandbox Code Playgroud)

html javascript

0
推荐指数
1
解决办法
4203
查看次数

标签 统计

concurrency ×1

html ×1

java ×1

javascript ×1