小编use*_*878的帖子

线程安全的哈希映射?

我正在编写一个将HashMap返回给用户的应用程序.用户将获得对此MAP的引用.在后端,我将运行一些将更新Map的线程.

到目前为止我做了什么?


我已经制作了所有后端线程,因此共享一个公共频道来更新MAP.所以在后端我确信并发写操作不会成为问题.


我遇到的问题


  1. 如果用户尝试更新MAP并同时在后端更新MAP - >并发写操作问题.
  2. 如果使用尝试从MAP读取内容并同时在后端更新MAP - >并发READ和WRITE操作问题.

直到现在我还没有遇到任何这样的问题,但我担心将来我可能会面对.请给出sugesstions.

我在用 ConcurrentHashMap<String, String>.

java multithreading hashmap java.util.concurrent

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

如何为可调用线程命名?

我正在使用ExecutorService线程池执行可调用对象.我想给这个帖子命名.

更具体地说,在旧版本中,我这样做了 -

Thread thread = new Thread(runnable Task);
thread.setName("My Thread Name");
Run Code Online (Sandbox Code Playgroud)

我在log4j日志记录中使用线程名称,这在故障排除时有很大帮助.现在我将我的代码从Java 1.4迁移到Java 1.6.我写了这个(在下面给出) - 但我不知道如何给这个帖子命名.

private final ExecutorService executorPool = Executors.newCachedThreadPool();
Future<String> result = executorPool.submit(callable Task);
Run Code Online (Sandbox Code Playgroud)

请给我一些想法给这个帖子命名?

java multithreading executorservice java.util.concurrent

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

java.net.SocketException:没有可用的缓冲区空间(达到最大连接数?):connect

您好我使用Apache HTTP Client 4.0基于HTTPS协议上传服务器上的一些文件.上传的应用程序全天候运行.今天突然间它开始抛出这个例外 -

java.net.SocketException: No buffer space available (maximum connections reached?): connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(Unknown Source)
    at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(Unknown Source)
    at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:333)
    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:123)
    at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:147)
    at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:101)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:381)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:641)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:576)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:554)
Run Code Online (Sandbox Code Playgroud)

谁能帮帮我吗?我对发生的事情完全无能为力?

这是上传文件的源代码 -

public File call() throws Exception {           
            HttpClient httpclient = new DefaultHttpClient();
        try{            
            httpclient.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);         
            /*
             * Create POST REQUEST
             */
            HttpPost httpPost = new HttpPost(this.URL);
            /* …
Run Code Online (Sandbox Code Playgroud)

java sockets connection httpclient socketexception

13
推荐指数
1
解决办法
6万
查看次数

自动更新jar文件

我目前正在研究基于java的桌面软件.它是一个相当大的代码库(超过40个jar文件).

我希望提供自动更新功能.桌面软件不断检查一个后端系统,以查看是否有新版本的jar文件可用.

现在的问题是:如何替换更新的jar文件?

java auto-update

6
推荐指数
1
解决办法
6138
查看次数

禁用apache HTTP Client的日志记录?

我正在编写一个应用程序,我使用HTTP协议将文件上传到服务器.一切都工作正常,我能够上传文件,我已经使用Apache HTTP客户端jar设置来实现这一目标.在应用程序中,我使用了已设置为DEBUG级别的log4j日志框架,默认情况下,Apache HTTP Client也选择了具有相同日志记录级别的相同日志框架,并且它生成了大量日志.任何人都可以指导我如何禁用apache Http客户端的日志记录?

我正在使用XML文件名log4j.xml配置log4j.

java apache log4j http

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

使用Oauth和服务帐户的GData

我有一个奇怪的问题.我正在核心java中编写一个应用程序,需要在google docs上访问自己的帐户.所以经过大量的谷歌搜索,我发现OAuth2.0与服务帐户是我正在寻找的东西.但我没有使用App Engine或其他任何东西.它的应用很简单.我不知道如何使用OAuth.我写了下面的代码,我不知道如何进一步.正在找人指导我:

GoogleCredential credential = new GoogleCredential.Builder().setTransport(HTTP_TRANSPORT).setJsonFactory(JSON_FACTORY)
                                                                    .setServiceAccountId(EMAIL)
                                                                    .setServiceAccountScopes(SCOPE)
                                                                    .setServiceAccountPrivateKeyFromP12File(new File("lib/key.p12")).build();

SpreadsheetService service = new SpreadsheetService("My test Service");
             //service .setOAuthCredentials(parameters, signer);
Run Code Online (Sandbox Code Playgroud)

谢谢 !

java gdata oauth-2.0

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

在同一主题上创建多个订阅者以实现负载共享(pub/sub)

我花了几乎一天的时间在 google pub sub 文档上创建一个小应用程序。我正在考虑从rabbitMQ切换到google pub/sub。这是我的问题:

我有一个将消息推送到主题 (T) 的应用程序。我想通过订阅者进行负载共享。所以我为 T 创建了 3 个订阅者。我将所有 3 个订阅者的名称保持相同 (S),这样我就不会 3 次收到相同的消息。

我有 2 个问题:

  1. 我在控制台上没有看到 3 个相同的 T 订阅者。它显示 1
  2. 如果我尝试同时启动所有 3 个订阅者实例。我收到“发生服务错误。”。如果我按顺序开始,错误就会消失。

最后,谷歌认真对待 pub/sub 吗?查看文档和公众参与,我不确定是否应该切换到 google pub/sub。

谢谢,

publish-subscribe rabbitmq google-cloud-pubsub

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

GCP 到 GCP 连接

我处于必须与 GCP 服务器建立 rabbitMQ 连接(我是消费者)的情况。我的代码也在 GCP 机器上。所以双方(一个是 MQ 生产者,另一个我)决定创建一个本地网络连接,而不是去外部 IP 连接。我已经尝试了一切,但没有这样做。我已经成功地做到了:

  1. 两个 GCP 上的 VPC 网络创建(让我们调用 A 和 B):成功
  2. VPC 网络对等互连 (A - B) 和 (B - A):成功
  3. 设置防火墙规则:成功
  4. 尝试从 B ping A (10.xxx) 的本地地址:失败

我在这里做错了什么吗?请帮忙。

谢谢,阳光

这是我对“A”的防火墙规则: 在此处输入图片说明

lan vpc google-cloud-platform

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