小编aka*_*okd的帖子

Java中的虚假唤醒真的发生了吗?

看到各种锁定相关的问题和(几乎)总是找到'循环因为虚假的唤醒'术语1我想知道,有没有人经历过这样的唤醒(假设一个像样的硬件/软件环境)?

我知道"虚假"一词意味着没有明显的理由,但这种事件的原因是什么?

(1注意:我不是在质疑循环练习.)

编辑:一个帮助问题(对于那些喜欢代码示例的人):

如果我有以下程序,我运行它:

public class Spurious {
    public static void main(String[] args) {
        Lock lock = new ReentrantLock();
        Condition cond = lock.newCondition();
        lock.lock();
        try {
            try {
                cond.await();
                System.out.println("Spurious wakeup!");
            } catch (InterruptedException ex) {
                System.out.println("Just a regular interrupt.");
            }
        } finally {
            lock.unlock();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

await如果不等待随机事件,我该怎么做才能虚假地唤醒它?

java multithreading locking spurious-wakeup

203
推荐指数
5
解决办法
3万
查看次数

使用Java将文件从一个目录复制到另一个目录

我想使用Java将文件从一个目录复制到另一个目录(子目录).我有一个目录,dir,带有文本文件.我在dir中遍历前20个文件,并希望将它们复制到dir目录中的另一个目录,这是我在迭代之前创建的.在代码中,我想复制review(代表第i个文本文件或审查)trainingDir.我怎样才能做到这一点?似乎没有这样的功能(或者我找不到).谢谢.

boolean success = false;
File[] reviews = dir.listFiles();
String trainingDir = dir.getAbsolutePath() + "/trainingData";
File trDir = new File(trainingDir);
success = trDir.mkdir();
for(int i = 1; i <= 20; i++) {
    File review = reviews[i];

}
Run Code Online (Sandbox Code Playgroud)

java directory copy file

147
推荐指数
14
解决办法
41万
查看次数

clone()vs copy constructor vs factory方法?

我在Java上实现了克隆()的快速谷歌,发现:http: //www.javapractices.com/topic/TopicAction.do?Id = 71

它有以下评论:

复制构造函数和静态工厂方法提供了克隆的替代方法,并且更容易实现.

我想做的就是做一份深刻的副本.实现clone()似乎很有意义,但这篇谷歌排名很高的文章让我有点害怕.

以下是我注意到的问题:

复制构造函数不适用于泛型.

这是一些无法编译的伪代码.

public class MyClass<T>{
   ..
   public void copyData(T data){
       T copy=new T(data);//This isn't going to work.    
   }
   ..
}
Run Code Online (Sandbox Code Playgroud)

示例1:在泛型类中使用复制构造函数.

工厂方法没有标准名称.

拥有可重用代码的接口非常好.

public class MyClass<T>{
    ..
    public void copyData(T data){
        T copy=data.clone();//Throws an exception if the input was not cloneable
    }
    ..
}
Run Code Online (Sandbox Code Playgroud)

示例2:在泛型类中使用clone().

我注意到克隆不是静态方法,但是不是仍然需要制作所有受保护字段的深层副本吗?在实现clone()时,在非可克隆子类中抛出异常的额外工作对我来说似乎微不足道.

我错过了什么吗?任何见解将不胜感激.

java clone

78
推荐指数
5
解决办法
5万
查看次数

在printStackTrace()上打印完整的调用堆栈?

我需要编写一个小的日志分析器应用程序来处理由我的项目中使用的第三方闭源库(在里面有自定义记录器)生成的一些日志文件.

如果日志中有异常条目,我需要从异常的顶部到实际位置收集有关堆栈跟踪所涉及方法的聚合信息.

不幸的是,默认情况下,Java printStackTrace()不会打印调用堆栈中的每个方法,而是打印一定数量,其余的只是被引用为16 more....

如果我能自己捕获异常,我会使用getStackTrace()并自己打印,但根本原因从未包含在此库引发的异常中.

有没有办法让Java在堆栈跟踪中打印整个调用堆栈?

除了我的情况,常见的日志框架可以选择吗?

编辑:该程序在Sun的JVM上使用JDK 1.5.0_09运行.无法改变这一点.

java logging stack-trace

42
推荐指数
2
解决办法
6万
查看次数

RxJava 2.x:我应该使用Flowable还是Single/Completable?

我正在使用Clean Architecture开发Android应用程序,我正在将其迁移到RxJava 2.x. 我必须向soap服务发出一些网络请求,所以我在域模块中定义了api接口:

public interface SiginterApi {
    Observable<User> login(String user, String password);
    ...
    Observable<List<Campaign>> getCampaigns(List<Long> campaignIds);
}
Run Code Online (Sandbox Code Playgroud)

我已经读过网络请求应该用" Flowable"进行,因为背压管理是因为它是'冷可观察'.在另一方面,我知道请求的结果将是成功的(与响应)或错误,所以我不知道我是否应该使用FlowableSingle甚至Observable.

此外,我有这样的数据库访问:

public interface UserRepository extends Repository {
    Observable<Void> saveUser(String username, String hashedPassword, boolean logged, User user);
    ...
    Observable<User> findUser(String username, String hashedPassword);
}
Run Code Online (Sandbox Code Playgroud)

我不知道我是否应该使用Completable/ Flowable/ ObservablesaveUser方法和Single/ Flowable/ ObservablefindUser方法.

java android reactive-programming rx-java2

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

使用变量而不是参数索引和JDBC预处理语句

在许多编程语言中,这样的语句可以用于准备语句:

PreparedStatement statement = connection.prepareStatement(
    "SELECT id FROM Company WHERE name LIKE ${name}");
statement.setString("name", "IBM");
Run Code Online (Sandbox Code Playgroud)

但不是java.sql.PreparedStatement.在Java中,必须使用参数索引:

PreparedStatement statement = connection.prepareStatement(
    "SELECT id FROM Company WHERE name LIKE ?");
statement.setString(1, "IBM");
Run Code Online (Sandbox Code Playgroud)

有没有像第一个例子中那样使用字符串变量的解决方案?"$ {.*}"是否未在SQL语言中的其他位置使用,或者是否存在冲突?因为我会自己实现它(解析SQL字符串并用"?"替换每个变量,然后用Java方式).

问候,凯

java jdbc

33
推荐指数
3
解决办法
4万
查看次数

为什么HTML 5没有内置的可编辑组合框或本地菜单?

我想知道,在新的HTML 5中,我们将获得<audio>和<video>标签,但为什么不是原生的可编辑组合框并内置本地菜单支持?

我之所以这么说是因为当我必须为典型的基于表的应用程序(例如订单管理应用程序)设计Web解决方案时,这些是我遇到的最常见的问题.在适当的客户端应用程序上,我可以使用操作系统提供开箱即用的这些功能(例如JPopupMenu,JComboBox).对于webapp,我必须寻找javascript(库)来完成类似的事情.

为什么这些不在HTML 5中?

我知道我应该像问题一样避免讨论,所以这里还有一些问题:你是否知道可以廉价地执行弹出菜单和可编辑组合框的库(可能只有一个小代码示例)?

javascript html5

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

在同一个项目中同时进行Java和Scala开发

我想以熟悉的Swing方式开发用户界面时利用Scala的Actor框架.

是否可以在Eclipse,NetBeans或任何其他IDE中使用混合的Java-Scala项目?

java eclipse netbeans scala

21
推荐指数
2
解决办法
8922
查看次数

在ScheduledExecutorService中运行的任务本身内停止定期任务

在ScheduledExecutorService中运行时,是否有一种很好的方法可以阻止任务内部重复任务?

可以说,我有以下任务:

Future<?> f = scheduledExecutor.scheduleAtFixedRate(new Runnable() {
    int count = 0;
    public void run() {
       System.out.println(count++);
       if (count == 10) {
           // ??? cancel self
       }
    }
}, 1, 1, TimeUnit.SECONDS);
Run Code Online (Sandbox Code Playgroud)

从外面看,很容易通过f.cancel()取消,但是如何在指定的地方停止重复?(通过AtomicReference传递Future是不安全的,因为当scheduleAtFixedRate返回f迟到且变量设置得太晚时,有一个潜在的窗口,并且任务本身可能已经运行,在引用中看到null.)

java concurrency anonymous-class executorservice variable-initialization

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

使用scala actor框架作为fork-join计算?

从理论上讲,使用Scala Actor Framework可以像JDK 7的Fork-Join框架一样进行一种异步的分治计算吗?如果是这样,我怎么能用框架表达FJ问题 - 例如,教程mergesort概念?我们欢迎代码小贴士.

(我根据我在其他FJ相关问题中得到的资源视频来了解这个想法.)

scala fork-join actor

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