假设我有一个方法:
public void run(){
synchronized(this.foo){
}
}
但有时当我运行这个方法时,我不需要对任何东西进行同步。
什么是有条件同步的好模式?我能想到的唯一模式是回调,类似于这样:
public void conditionalSync(Runnable r){
if(bar){
r.run();
return;
}
synchronized(this.foo){
r.run();
}
}
public void run(){
this.conditionalSync(()->{
});
}
有没有别的方法,不用回拨?
与其使用synchronized
关键字,不如使用ReentrantLock
(更灵活、更强大)。
例子:
ReentrantLock lock = ...;
public void run(){
if (bar) {
lock.lock();
}
try {
// do something
} finally {
if (lock.isHeldByCurrentThread()) {
lock.unlock();
}
}
}
我有如下代码: 在我的属性文件中,我有: 这不起作用,parseFooBar在第一秒每分钟都被执行。 但是,如果我添加字段: 所以我可以做一个日志,看看它是什么,parseFooBar不会被执行。移除注入的字符串会再次看到parseFooBar执行。我做错了什么? 编辑:这是使用Spring 4.1.5,Spring Boot 1.2.1和JDK 8 编辑2:将注释移动到类型也有效。(无需强制使用
有部分条件如 target_os 在使用 rustc 时会隐式地提供,但是自定义条件必须使用 --cfg 标记来传给 rustc。 #[cfg(some_condition)] fn conditional_function() { println!("condition met!") } fn main() { conditional_function(); } 不使用自定义的
我有一个树视图,其中单元格必须根据TreeItem值的实际实现显示不同的信息。 我的域模型如下所示: 在我看来,将“如何在单元格中显示任务”或“如何在单元格中显示组”的行为分为两个不同的类是很自然的。 下面的控制器类包含一个树视图,我在其中设置CellFactory。 但现在我被困在这里,无法决定我必须返回哪种类型的牢房。事实上,我只有相关的TreeView参数,而没有相关的TreeItem! 在
我希望我的应用程序从RabbitMQ中的“消息”队列中读取一些内容,如果消息是“ping”,则用“pong”响应同一队列。到目前为止,我已经尝试了两件事: 一个消费者和供应商连接一个队列,但我总是得到"不能撰写任何与消费者"当应用程序启动。 当输入和输出队列不同时,这是可行的,但我的要求是它们相同。 java.util.函数,如果条件不满足,则返回null。 当接收到非“ping”的内容时,我会看
问题内容: 我想基于从客户端传递的String参数注入一个bean。 我希望基于传递的参数注入报表实例。任何帮助将不胜感激。提前致谢 问题答案: 使用工厂方法模式: 当您使用以下命令调用控制器时,Spring可以创建报告类型: 但是,它非常笨拙,并且每次添加新报告类型时都需要进行修改。如果报告类型列表已修复,则可以。但是,如果您计划添加越来越多的类型,这将是一个更可靠的实现: 通过此实现,添加新的
对于在其生命周期的某个点隐藏的组件,呈现它的最佳方式是什么?1)渲染组件,但不显示它(显示:无)。2)只在需要时渲染组件。什么对性能更好?如果组件的道具和状态稍后更新,是否最好让组件存在,但隐藏在虚拟DOM中? 或者这个: