小编new*_*ser的帖子

如何在 Mockito 中模拟 CompletableFuture 的完成

CompletableFuture我想模拟当 a成功完成时正在调用一些代码。

我有这门课:

public class MyClassImplementRunner implements Runnable {

    private final String param1;

    public MyClassImplementRunner(String param1) {
        this.param1 = param1;
    }

    public static CompletableFuture<Void> startAsync(String param1) {

        return CompletableFuture.runAsync(
            new MyClassImplementRunner(param1)).whenComplete(
            (response, throwable) -> {
                //some code when complete
            });

        @Override
        public void run () {
            //the runnable code
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的 Junit 中(使用 Mockito 和 Java 8),我需要模拟它

//some code when complete 
Run Code Online (Sandbox Code Playgroud)

当 Future 成功完成时调用。

您能否提供一些关于如何实现这一目标的指示?

java mockito completable-future

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

不同的线程,访问相同的同步方法,返回意外的结果

我很难理解同步如何在同一个对象的两个不同方法上工作.我有一个类,有两个声明为synchronized的实例方法.三个线程访问此对象的两个同步方法,但结果是意外的.线程可以互换地访问这两种方法.它们不等待释放整个对象的锁定.这是样本:

public class ThreadSafeCounterSameMonitor2 {

    private int value;

    public synchronized int getValue() {
        return this.value;
    }

    public synchronized void setValue(int value) {
        this.value = value;
    }

    public static void main(String[] args) {

        ThreadSafeCounterSameMonitor2 nts = new ThreadSafeCounterSameMonitor2();

        Thread th1 = new Thread(new Runnable() {
            public void run() {
                nts.setValue(5);
                System.out.println("Thread Id " + Thread.currentThread().getId() + ", expected value is 5, value=" + nts.getValue());
            }
        });

        Thread th2 = new Thread(new Runnable() {
            public void run() {
                nts.setValue(10);
                System.out.println("Thread Id " …
Run Code Online (Sandbox Code Playgroud)

java multithreading synchronized

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