我有一个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) 我的日志文件中有多种(三种)类型的日志。其中一种类型有一些自己的打印 + 异常堆栈跟踪。该示例如下所示:
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) 我将使用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) 嗨:我们正在将Java用于多线程应用程序.我们发现了Java I/O的瓶颈.功能编程,例如scala,有更好的I/O吞吐量吗?我们将拥有许多内核cpu,从这个意义上讲,业务逻辑可以非常快速地处理,但I/O将成为瓶颈.有什么好的解决方案吗?
如果我创建一个视图,视图是实时反映物理表还是只是一个物化视图,并且每n秒/分钟与物理表同步.如果我想更新某些内容,可以更新实体化视图,那么db会同步视图和表吗?
我有一个多线程的应用程序.我注意到一些现有代码在多个线程共享变量时使用volatile.为什么不在使用变量时在方法中使用synchronized,将变量定义为volatile的好处是什么?