小编use*_*592的帖子

Java同步:同步方法和同步块

我有一个mulitThread Java应用程序.在一种方法中,需要同步ArrayList.由于arrayList不是线程安全的,所以我必须使用同步.问题是ArrayList类型的对象不是对象的成员变量.该方法的原型如下:

public void simultaneousAccess(ArrayListWrapper aListWrapper){
  ArrayList list = aListWrapper.getList();
  //...Codes manipulate the list            
}
Run Code Online (Sandbox Code Playgroud)

由于多线程,我应该使用

一个)

 public void synchronized simultaneousAccess(ArrayListWrapper aListWrapper){
         ArrayList list = aListWrapper.getList();
         //...Codes manipulate the list            
    }
Run Code Online (Sandbox Code Playgroud)

要么

B)

public void simultaneousAccess(ArrayListWrapper aListWrapper){
     ArrayList list = aListWrapper.getList();
     Synchronized(list){
         //...Codes manipulate the list 
     }           
 }
Run Code Online (Sandbox Code Playgroud)

从性能测试来看,都不起作用.但我不知道为什么?

这里有完整的源代码:

package com.juhani.prototype.sync;

import java.util.ArrayList;

public class ArrayListWrapper {
    public ArrayList<Integer> aList = new ArrayList<Integer>();

    public ArrayListWrapper(){
        Integer one = new Integer(1);
        Integer two = new Integer(2);
        Integer three = new …
Run Code Online (Sandbox Code Playgroud)

java multithreading

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

grok 解析多行,例如异常堆栈跟踪

我的日志文件中有多种(三种)类型的日志。其中一种类型有一些自己的打印 + 异常堆栈跟踪。该示例如下所示:

Multiple lines example:
    2018-04-27 10:53:17 [http-nio-8088-exec-4] - ERROR - app-info-exception-info - params:{"cardid":"111111111","txamt":10,"ip":"192.168.16.89","stationcode":"0002","inputuserid":1,"organcode":"99999"} java.lang.NullPointerException: null
        at com.datalook.group.BusinessHandler.handler(BusinessHandler.java:93) ~[classes/:?]
        at com.datalook.group.BusinessGroupController.businessGroup(BusinessGroupController.java:51) [classes/:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_77]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_77]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_77]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_77]
Run Code Online (Sandbox Code Playgroud)

我有一个模式来解析它,它是:

#pattern:
(?<timestamp>[\d\-\s\:]+)\s\[(?<threadname>[\w\-\d]+)\]\s-\s(?<loglevel>[\w]+)\s\-\s(?<appinfo>app-info-exception-info)\s-\s(?<params>params):(?<jsonstr>[\"\w\d\,\:\.\{\}]+)\s(?<exceptionname>[\w\d\.]+Exception):\s(?<exceptiondetail>[\w\d\.]+)\n\t(?<extralines>at[\s\w\.\d\~\?\n\t\(\)\_\[\]\/\:\-]+)\n
Run Code Online (Sandbox Code Playgroud)

模式在解析多行异常堆栈跟踪时有错误(实际上不是错误,但没有完全解析或按预期解析),主要在最后两部分(exceptiondetail(在这种情况下为 null)和 extralines(那些以空格或制表符开头的行加上 'at ',或第一行堆栈跟踪之后的行))。有比我更好的主意吗?

在 filebeat.yml 中,我配置了以下内容:

# The regexp Pattern that has to be matched. The example pattern matches all lines starting with [
  multiline.pattern: '^[[:space:]]'

  # Defines if the pattern set under pattern should be negated or not. …
Run Code Online (Sandbox Code Playgroud)

logstash logstash-grok elastic-stack

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

Kubernetes,VolumeMounts是文件,而不是目录

我将使用K8S来编排Docker容器。在k8s中,我需要将文件从主机目录(/configs/nginx/cas-server.conf)复制到pod容器目录(/etc/nginx/nginx.conf),但是当前的k8s仅允许装入目录,而不允许装入/复制文件。如何解决这个问题呢?

以下是我的nginx-cas-server-deply.yaml文件。

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-cas-server-depl
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx-cas-server-pod
    spec:
      containers:
      - name: nginx-cas-server-pod
        image: nginx
        imagePullPolicy: Never
        ports:
          - containerPort: 100
        volumeMounts:
        - mountPath: /etc/nginx/nginx.conf
          name: nginx-cas-server-conf
        - mountPath: /app/cas-server/public
          name: nginx-cas-server-public
      volumes:
      - name: nginx-cas-server-conf
        hostPath:
          path: /configs/nginx/cas-server.conf
      - name: nginx-cas-server-public
        hostPath:
          path: /cas-server/public
Run Code Online (Sandbox Code Playgroud)

kubernetes

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

I/O函数式编程和java编程

嗨:我们正在将Java用于多线程应用程序.我们发现了Java I/O的瓶颈.功能编程,例如scala,有更好的I/O吞吐量吗?我们将拥有许多内核cpu,从这个意义上讲,业务逻辑可以非常快速地处理,但I/O将成为瓶颈.有什么好的解决方案吗?

java functional-programming scala

0
推荐指数
4
解决办法
649
查看次数

SQL:视图和表

如果我创建一个视图,视图是实时反映物理表还是只是一个物化视图,并且每n秒/分钟与物理表同步.如果我想更新某些内容,可以更新实体化视图,那么db会同步视图和表吗?

sql database view ibm-soliddb

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

Java volatile变量,多线程

我有一个多线程的应用程序.我注意到一些现有代码在多个线程共享变量时使用volatile.为什么不在使用变量时在方法中使用synchronized,将变量定义为volatile的好处是什么?

java multithreading

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