java单元测试启动类配置_java-在单元测试中启动新的JVM

我有一个类,它锁定文件. (请参阅下文.)现在,我有一个单元测试,它断言了同一VM中两个线程之间的成功锁定.但是,实际上我会在两个VM之间使用锁.这就提出了一个问题:如何在单独的进程中启动另一个JVM?

谢谢,

约臣

public class FileLocker {

public static interface StreamAccessor {

InputStream getInputStream();

OutputStream getOutputStream();

}

public static void runLocked(File pFile, Consumer pConsumer) {

Function function = (sa) -> { pConsumer.accept(sa); return null; };

callLocked(pFile, function);

}

public static T callLocked(File pFile, Function pConsumer) {

try (final RandomAccessFile raf = new RandomAccessFile(pFile, "rw");

final FileChannel channel = raf .getChannel();

final FileLock lock = channel.lock()) {

final StreamAccessor sa = new StreamAccessor() {

@Override

public OutputStream getOutputStream() {

return Channels.newOutputStream(channel);

}

@Override

public InputStream getInputStream() {

return Channels.newInputStream(channel);

}

};

final T t = pConsumer.apply(sa);

return t;

} catch (Throwable thr) {

throw Exceptions.show(thr);

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值