小编use*_*108的帖子

这是在Java中创建锁的可接受方式吗?

我遇到了这样的逻辑,即有人在今天的工作中实现了,并且以这种方式创建锁是错误的.你们有更好的解决方案吗?不在myObj上使用synchronized块的问题是它可以为null.还有其他建议吗?

 public class myClass {
    private Object myObj;
    private Object lock = new Object();

    public void method1() {
        synchronized( lock ) {
            // has logic to read myObj
        }
    }


    public void method2()  {
        synchronized( lock ) {
            // has logic to update myObj
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

java concurrency multithreading

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

切换到Java 8时的比较器问题

我正在从Java 6迁移到Java 8,并注意到Comparator接口特有的一些东西.对此的任何见解都会非常有帮助.

当我切换到Java 8时,对象的顺序在"compare"方法内切换,列表排序失败.我回到java 6,它工作得很好.这是一个测试用例,使用Java 8失败了,并且使用了Java 6.

public class ComparitorTest {

@Test
public void comparatorTest(){
    Record record1 = new Record("First", false);
    Record record2 = new Record("Second", true);
    List<Record> list = new ArrayList<Record>();

    list.add(record1);
    list.add(record2);


    final Comparator<Object> recordComparator = new Comparator<Object>()
            {
                public int compare( Object o1, Object o2 )
                {
                    Record r1 = (Record) o1;
                    Record r2 = (Record) o2;

                    Boolean isReadonly_R1 = r1.getIsReadOnly();
                    Boolean isReadOnly_R2 = r2.getIsReadOnly();

                if( isReadonly_R1.equals( Boolean.TRUE ) )
                    {
                        return 0;
                    }
                    else
                    { …
Run Code Online (Sandbox Code Playgroud)

java sorting comparator java-6 java-8

0
推荐指数
2
解决办法
689
查看次数