小编Mat*_*weł的帖子

测试应用程序是否是线程安全的

我有简单的应用程序,模拟从一个帐户到另一个帐户的汇款.我想写一个测试,表明它不是线程安全的.

线程有可能以这样的方式进行,即传输将进行两次.两个线程场景:

  • acc1 = 1000 $
  • acc2 = 0 $
  • 转600美元

    1. T1:获得acc1余额(1000)
    2. T2:获得acc1余额(1000)
    3. T1:从account1减去600 $(400)
    4. T2:从account2减去600 $(400)
    5. T1:将acc2提高600 $(600)
    6. T2:将acc2提高600 $(1200)

目前我的应用程序不支持多线程,它应该失败,现在对我来说没问题.我能够使用调试器模拟错误.但是,当我进行线程测试时,它总是成功的.我试过不同数量的线程,睡眠,callabletasks

@Test
    public void testTransfer() throws AccountNotFoundException, NotEnoughMoneyException, InterruptedException {
        Callable<Boolean> callableTask = () -> {
            try {
                moneyTransferService.transferMoney(ACCOUNT_NO_1, ACCOUNT_NO_2, TRANSFER_AMOUNT);
                return true;
            } catch (AccountNotFoundException | NotEnoughMoneyException e) {
                e.printStackTrace();
                return false;
            }
        };

        List<Callable<Boolean>> callableTasks = new ArrayList<>();
        int transferTries = 2;
        for(int i = 0; i <= transferTries; i++) {
            callableTasks.add(callableTask);
        }

        ExecutorService executorService = Executors.newFixedThreadPool(2); …
Run Code Online (Sandbox Code Playgroud)

java multithreading

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

C#反射GetType()异常

我得到了奇怪的错误,不知道为什么.

Type names passed to Assembly.GetType() must not specify an assembly.
Run Code Online (Sandbox Code Playgroud)

奇怪的是我自己不使用方法GetType().它是由以下行引起的:

var domainCommunicator = (DomainCommunicator)dmn.CreateInstanceAndUnwrap(typeof(DomainCommunicator).FullName, "DomainCommunicator");
Run Code Online (Sandbox Code Playgroud)

domainCommunicator继承自MarshalByRefObject.它是公开的,但是当我将其更改为私有时,我得到了无法加载程序集的例外情况.当我在我的解决方案中创建其他项目并完全外部.dll没有任何变化.可能是因为我必须在我的新AppDomain中引用主项目.

对我来说最好的事情是在反射中跳过DomainCommunicator类.它应该是私人的,就是这样.究竟是什么导致了例外?

c# reflection appdomain

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

具有可变参数的 JSF 操作方法

如何在 JSF 中调用带有可变参数的方法?

我尝试过这样的事情:

<h:commandButton value="Send" action="#{myBean.checkPIN(someOtherBean.PIN)}" />
Run Code Online (Sandbox Code Playgroud)

然而,这不起作用。

variables methods el jsf-2

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

JavaFx Tableview 复选框需要焦点

我在我的 tableView 中实现了布尔表示作为复选框。它通常工作正常,但非常令人恼火的事实是它需要关注行(编辑)以应用复选框值的更改。这意味着我首先必须双击该字段,然后单击复选框。

如何使复选框更改立即执行 onEditCommit?

public class BooleanCell<T> extends TableCell<T, Boolean> {
private CheckBox checkBox;

public BooleanCell() {
    checkBox = new CheckBox();
    checkBox.selectedProperty().addListener(new ChangeListener<Boolean>() {
        public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
            if (isEditing())
                commitEdit(newValue == null ? false : newValue);
        }
    });
    setAlignment(Pos.CENTER);
    this.setContentDisplay(ContentDisplay.GRAPHIC_ONLY);
    this.setEditable(true);
}

@Override
public void updateItem(Boolean item, boolean empty) {
    super.updateItem(item, empty);
    if (empty) {
        setGraphic(null);
    } else {
        checkBox.setSelected(item);
        setGraphic(checkBox);
    }
}
Run Code Online (Sandbox Code Playgroud)

}

checkbox javafx tableview

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