小编use*_*534的帖子

使用Java 8的模板方法设计模式

我想使用java 8新的默认方法重构模板方法.假设我在抽象类中定义了一个流程:

public abstract class FlowManager{
    public void startFlow(){
        phase1();
        phase2();
    }
    public abstract void phase1();
    public abstract void phase2();
}
Run Code Online (Sandbox Code Playgroud)

我有几个子类扩展上面的流管理器,每个子类实现自己的phase1和phase2mathod.我想知道将代码重构为这样的接口是否有意义:

public interface FlowManager{
    public default startFlow(){
        this.phase1();
        this.phase2();
    }
    public void phase1();
    public void phase2();
}
Run Code Online (Sandbox Code Playgroud)

你怎么看?

java design-patterns java-8 default-method

4
推荐指数
1
解决办法
4801
查看次数

来自修改集合的Java 8流

假设我有一个List只被一个线程修改的对象(线程可以添加或删除对象),而另一个线程偶尔使用上面集合中的流api对它进行一些流操作,最后(急切操作)返回一个新的集合.这是一个线程安全的场景吗?毕竟只有一个线程更新了集合.

java multithreading java-8 java-stream

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

将第三方代码与java中的应用程序分离

我有一个使用第三方(外部罐子)的应用程序,到处都有.比方说,我在某个类中有一个方法f

public int f(int x){
Y y = new Y(x);
return y.someCalculations();
}
Run Code Online (Sandbox Code Playgroud)

Y是来自第三方的班级.

说我想转移到其他第三方?或者我自己实现Y,我怎么能以这样的方式解除依赖,以便我可以毫不费力地使用我想要的任何第三方.

提前谢谢你

java design-patterns

2
推荐指数
1
解决办法
2595
查看次数

多线程环境java中的整数赋值

读取和写入操作以引用变量和原始变量在java中是原子的.

说我有以下课程:

public class Example{
  private int k;
  public void setK(int k){
    this.k = k;
  }
}
Run Code Online (Sandbox Code Playgroud)

据我所知,它是一个线程安全的,因为整数赋值是原子的.可见性呢?当一个线程更新k时,它意味着其他thead会看到更新的值吗?

谢谢你的推荐

java multithreading

2
推荐指数
1
解决办法
106
查看次数

在 Java 中的线程内启动线程

假设我有线程池,并且我正在从该线程池中执行一个带有名称的线程的任务thread-a 现在在thread-a我开始一个新线程中让我们调用它thread-child(可能是池线程,也可能不是)这是否意味着thread-a要回到线程池什么时候thread-child运行?还是thread-a会死?

java multithreading

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

参考方法Java 8

我想要洗牌清单.我想这样做的方法是在java 8的列表中使用sort方法.我想为每个数字分配0到1之间的随机数,并根据它对列表进行排序.在这里我拥有和它的工作原理:

List<Integer> list = Arrays.asList(1,2,3,4,5);
list.sort(comparing(x->new Random().nextFloat()));
Run Code Online (Sandbox Code Playgroud)

它的工作原理.但是,当我想使用这样的参考方法时:

list.sort(comparing(Random::nextFloat));
Run Code Online (Sandbox Code Playgroud)

我得到编译时错误,我不明白为什么.毕竟我的比较器为每个元素生成随机数,然后按此随机数排序.有任何想法吗?

提前谢谢你

java java-8

-1
推荐指数
1
解决办法
87
查看次数

为什么Java 8中的IntStream.range(0,n)不应该是并行的?

我已经阅读了一本关于Java 8的书,该书说使用并行流来获取数字的范围IntStream.range(0,someNumber)可能比连续的慢...为什么?

java java-8 java-stream

-1
推荐指数
1
解决办法
2426
查看次数