小编Hen*_*ing的帖子

ConcurrentHashMap和Collections.synchronizedMap(Map)有什么区别?

我有一个Map,它将被多个线程同时修改.

Java API中似乎有三种不同的同步Map实现:

  • Hashtable
  • Collections.synchronizedMap(Map)
  • ConcurrentHashMap

据我所知,这Hashtable是一个旧的实现(扩展过时的Dictionary类),后来经过调整以适应Map界面.虽然它同步的,但似乎存在严重的可扩展性问题,并且不鼓励新项目.

但是其他两个怎么样?返回的地图Collections.synchronizedMap(Map)ConcurrentHashMaps 之间有什么区别?哪一种适合哪种情况?

java concurrency dictionary

577
推荐指数
13
解决办法
33万
查看次数

如何从Windows命令行执行HTTP HEAD请求?

Windows(Vista)命令行上获取远程Web服务器上文件大小和修改时间的最佳方式(或工具)是什么,而不下载它?

windows command-line http windows-vista

11
推荐指数
4
解决办法
9万
查看次数

在Hibernate中映射多级继承

目前我有这样的结构:

A
|
+--B
|
+--C
Run Code Online (Sandbox Code Playgroud)

它使用连接表映射每个子类一个表.由于历史原因,我也使用了鉴别器,所以目前的情况如Hibernate手册第9.1.3节所述.

问题:如何扩展这样的结构的映射:

A
|
+--B
|  |
|  D
|
+--C
Run Code Online (Sandbox Code Playgroud)

<subclass>可以<subclass>在hibernate映射吗?什么<key>我需要S'

java orm inheritance hibernate

7
推荐指数
1
解决办法
5414
查看次数

在实现具有抽象类的接口时声明什么(不)?

我有一个接口A,我必须提供一些不同的实现.但是,这些实现共享一些辅助方法,因此我将这些方法移动到抽象基类.

Interface A {
    void doX();
}

abstract Class B implements A {
    protected void commonY() {
        // ...
    }

    @Override
    public abstract void doX();
}

Class C extends B {
    @Override
    public void doX() {
        // ...
    }
}

Class D extends B {
    @Override
    public void doX() {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

我的代码按预期工作,但我有几个问题:

  • 我应该在B类中声明抽象方法doX()吗?为什么不)?

  • 我是否还应该在C类和D类上明确声明"实现A"?为什么不)?

java interface class declaration abstract

7
推荐指数
1
解决办法
1002
查看次数

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