小编prv*_*rvn的帖子

Collections.sort()声明:为什么<?超级T>而不是<T>

为什么要Collections.sort(List<T>)签名:

public static <T extends Comparable<? super T>> void sort(List<T> list) 
Run Code Online (Sandbox Code Playgroud)

并不是 :

public static <T extends Comparable<T>> void sort(List<? extends T> list)
Run Code Online (Sandbox Code Playgroud)
  • 我知道它们都有同样的目的; 那么为什么框架开发人员使用第一个选项呢?
  • 或者这些声明真的不同吗?

java generics collections comparable

24
推荐指数
2
解决办法
1089
查看次数

客户端锁定

以下是JCIP的摘录

在此输入图像描述

作者说,为了使上面的代码线程安全,我们必须使用客户端锁定.

要使此方法有效,我们必须使用List使用的相同锁,方法是使用客户端锁定或外部锁定.客户端锁定需要保护使用某个对象X的客户端代码,其中锁X用于保护自己的状态.为了使用客户端锁定,您必须知道X使用什么锁.

在此输入图像描述

为什么我们不能简单地将List <E>对象设置为私有以使ListHelper类是线程安全的?

java multithreading

5
推荐指数
1
解决办法
877
查看次数

如何在写集合上复制提供线程安全性?

如何在写集合上复制提供线程安全性以及它们在哪些场景中有用?

java multithreading

5
推荐指数
1
解决办法
2682
查看次数

如何使volatile count操作成为线程安全的

我一直在经历JCIP,作者在那里说..

线程限制的特殊情况适用于volatile变量.只要确保volatile变量仅从单个线程写入,对共享的volatile变量执行读 - 修改 - 写操作是安全的.

例如,count ++被认为是一个复合操作(读取值,向其中添加一个值,并更新值)并将count指定为volatile不会使此操作成为原子操作,因此这里不保证线程安全!我对吗 ??但是这里作者说我们可以修复它,如果我们确保volatile变量只是从一个线程写的.我没理解这一点.请提供说明.

java multithreading volatile

3
推荐指数
2
解决办法
475
查看次数

jax-rs 用例中的 StreamingOutput?

JAX-RS 提供了 StreamingOutput 接口,我们可以实现它来对我们的响应主体进行原始流式处理。

public interface StreamingOutput {
    void write(OutputStream output)
}
Run Code Online (Sandbox Code Playgroud)

我不确定他们为什么要构建一个接口来公开响应输出流。为什么不直接注入一个 OutputStream ,我们可以简单地写入它!

jax-rs

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

为什么这个类线程安全?

在此输入图像描述

曾经有过

 public synchronized void deletePerson(Person p)
      { mySet.remove();}
Run Code Online (Sandbox Code Playgroud)

它也会保持线程安全吗?

java multithreading

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

为什么在bash 3.2中带有空的右侧的正则表达式匹配为false,而在4.2中为true?

给定两个字符串:

a="hello h" 
b="" 
Run Code Online (Sandbox Code Playgroud)

在bash 4.2版中,其regex比较结果为true

[[ "${a}" =~ "${b}" ]]
echo $?                           # 0
Run Code Online (Sandbox Code Playgroud)

在bash 3.2版中,正则表达式的比较结果为false

[[ "${a}" =~ "${b}" ]]
echo $?                           # 2
Run Code Online (Sandbox Code Playgroud)

编辑:第一个结果在带有4.2.46(2)-发行版bash的linux操作系统上运行,而第二个结果在运行3.2.57(1)-发行版bash的OS Mojave上运行。

bash

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