log4j2是否存在线程安全问题

应用中定义了一个日志打印切面,切面中定义了一些静态的logger成员变量,类似于这样
private static final Logger logger = LoggerFactory.getLogger(ApiLogAspect.class);
现在的问题是多个线程使用同一个logger是否会存在安全问题。
谢谢各位大佬各显神通

0

2个回答

Log4j组件设计用于大量多线程系统
log4j是线程安全的。原因是AppenderSkeleton.doAppend()方法是同步的。但要小心配置编程! 例如,您不能在不同的appender中使用相同的TTCCLayout实)!看看PatternLayout方法format()。它改变实例字段(StringBuffer sbuf),所以如果你在不同的appender中使用相同的PatternLayout实例,你将面临竞争条件。EnhancedPatternLayout更好,因为他们修改格式化方法。
希望对你有用
http://blogxinxiucan.sh1.newtouch.com/2017/06/27/Hello/

0

必须是线程安全的 放心使用

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Spring MVC 线程安全问题的思考
在读一些博文的时候发现有些文章对SpringMVC的Controller线程安全的验证并不正确,比如没有探究controller线程不安全的具体原因,比如将请求线程当做controller多例的证明,以下将验证。http://bbs.csdn.net/topics/390894585 http://bbs.csdn.net/topics/390891861#post-398241838 1
SpringMVC线程安全问题 小结
首先对于spring的IOC来说,对象是由Spring来帮我们管理,也就是在Spring启动的时候,在Spring容器中,由Spring给我们创建的,Spring会帮我们维护,一般都是单例的,也就是一个对象。 SpringMVC的Controller默认是单例的,对于同一个Controller而言,在整个web生命周期内只有一个对象。如果在Controller里写了一个成员变量,这个变量是对
servlet是否存在线程安全问题
        今天老师问了一句,servlet存在线程安全问题吗,心想着servlet不是单例的嘛,每个线程在调用的时候都会为实例对象分配独立的引用。我就以为servlet属于线程安全的。晚上自己再网上查看了一下,发现servlet不是安全的。        下面就给大家介绍一下servlet线程安全问题        首先,默认的servlet是非线程安全的,servlet是单例模式,只产生一...
线程中存在的问题和反射讲解
一:线程中的一些方法(线程中存在的现象) 1.1 线程加入 public final void join() 等待该线程中止,其他线程才能继续抢着执行1.2 线程礼让 public static void yield():暂停当前正在执行的线程对象,并执行其他线程。 作用:让线程间的执行更和谐一些,但是实际上做不到。可以通过
局部变量线程安全的理解
如何理解局部变量线程安全
局部变量一定线程安全吗
局部变量, 如果是基本类型或是包装类型, 依然不能通过多线程改变其值, 如果是对象, 则其属性值是线程不安全的 (对象引用是局部变量, 在栈内存, 但是对象本身还是处于堆内存) 这样理解还是有偏差, 如果是基础类型, 如int: 如果是全局变量, 那么各线程可以直接操作, 其一定是线程不安全的 如果是局部变量, 那么只能将该变量作为形参传入线程中, 这时int值是不能被改变的, 不管线程安...
多线程中使用静态方法存在线程安全的问题
类的成员分两类,静态成员(static member)和实例成员(instance menber),静态成员属于类,实例成员则属于对象,即类的实例。    我们知道,静态字段和静态方法的调用都是通过类来调用的,静态方法不会对特定的实例操作,只能调用调用类中的其他属性和静态方法,不能调用类中的非静态属性和非静态方法。实例方法可以对特定的实例操作,既能访问静态属性和静态方法,也能访问实例属性和实例方
单例模式涉及到的线程安全问题
1.单例模式单例模式分为饿汉式和懒汉式,也即 即时加载和懒加载的分别 下面分别看两个形式:1.1饿汉式class SingleHungry{ //1.首先私有化构造器,这样使该类不可以被其他对象创建对象 //2.自己内部创建对象 //3.写一个静态方法让外部调用实例 private static Single s = new Single(); //上面一句
java 单例模式与线程安全性问题
饿汉式饿汉式就是在变量申明的时候就完成初始化工作优点:没有线程安全性问题缺点:在程序加载时,单例模式的实体就已经被创建了,存在性能问题public class Singleton { // 私有化构造方法 private Singleton () {} private static Singleton instance = new Singleton(); public stat...
Spring创建好的单例对象是否存在线程安全的问题?
前言: 这是我在一次面试中被问到过的问题,但是当时我回答的并不是太好,最近在学习多线程知识的时候又对这个问题有了新的理解,所以这篇文章主要讲解下我对个问题的理解。 正文: 一、理解这个问题前,你需要先知道几个知识点 1.spring的bean作用域都有哪些?默认是哪个? 作用域 字符 描述 单例 singleton 整个应用中只创建一个实例 原型 p...
spring中bean的线程安全问题
Spring容器生成的Bean都是默认单例的,那么spring是怎么处理并发的情况下线程安全问题呢? 在讲单例和线程安全之前首先我们要明白一点,那就是在单例模式下多线程也可以同时访问同一个对象。单例模式顾名思义,所有的线程来调用方法的时候都是由同一个实例对象来调用方法的,那么如果设计一个类的实现为单例,当多个线程调用方法时会不会出现线程安全问题呢?答案是不会,为什么呢,其实很简单,我们可以从线程...
Java 中ArrayList的线程安全问题
猿问 Java 中ArrayList的线程安全问题 慕雪92620662018-07-15 10:09:17 有两个线程操作一个ArrayList A线程会执行list.clear(); B线程会执行 if(!list.isEmpty()){ list.get(list.size() - 1).xxx(); } 如果B线程进入了if 代码块时候阻塞了 而此时A线程执行...
过滤器、监听器、上下文、servlet线程安全问题
就像名字写那样,过滤器可以过滤请求,比如对一些评论进行过滤。又不改原有代码的基础上可以加上一个过滤器,或者是登陆验证。集中在一个过滤器中处理。写一个类实现接口 Filter 之后一定要在配置文件中配置!!!监听器可以监听,上下文的概念。过滤器:什么是过滤器: servlet规范当中定义的一种特殊的组件,用来拦截servlet容器的调用过程。 会先调过过滤器的方法,过滤器决定是否向后继续调用就是调
js 中线程及线程安全
for (var i = 0; i < 10; i++) { setTimeout(function () { console.log(i); },0); } i = 10 这是因为 i 的作用域被提升为全局 只要将var 改成 let 就可以了。...
关于java线程安全问题
线程:负责一个进程中的代码执行。线程是进程中的一个执行路径。 线程安全问题出现的根本原因: 1. 存在着两个或者两个以上的线程。 2. 多个线程共享了着一个资源, 而且操作资源的代码有多句。 线程安全问题的解决方案: 1. 使用同步代码块 格式: synchronized(锁对象){ 需要被同步的代码; } 线程的生命周期状态图(线程总共有图
关于如何解决HashMap线程安全问题的介绍
HashMap为什么是线程不安全的?如何解决HashMap的线程不安全问题?
静态变量的安全问题
首先,先给出结论,静态变量在多线程的情况下是会出现安全的问题的,下面上代码验证: 验证思路,通过两个线程去a++,最后结果应该是2000,否则就是线程不安全的; public class TestStatic { public static int a=0; public static void inc(){ a++; } public static void main...
log4j2异步多线程打印
1.该工程为maven构建,要有maven环境 2.支持异步打印 3.支持多线程打印
SpringMvc线程安全问题(个人感悟)
由于springmvc是singleton的,所以假如存在全局变量时就容易导致线程安全问题,线程安全问题其实归根结底就是数据共享问题,这就又牵扯到java虚拟机的内存结构了,每一个线程都会有自己的工作内存,还有一块公用的内存,共享内存,我们定义好的一个变量放在共享内存中,每当一个线程对全局变量进行操作时,都会与共享内存中的保存的全局变量的值进行比较。Spring MVC默认是单例模式,Contro...
Redis为什么是单线程、及高并发快的大原因详解
一、Redis的高并发和快速原因 1.redis是基于内存的,内存的读写速度非常快(纯内存)。 2.redis是单线程的,省去了很多上下文切换线程的时间(避免线程切换和竞态消耗)。 3.redis使用多路复用技术,可以处理并发的连接(非阻塞IO)。 非阻塞IO 内部实现采用epoll,采用了epoll+自己实现的简单的事件框架。epoll中的读、写、关闭、连接都转化成了事件,然后利用epo...
Java——多线程存在的安全问题
/* 存在的问题:当num=1时,假如线程t1此时拿到CPU,执行任务代码,在判断if语句条件刚刚结束时,也就是还没来得及执行输出语句,CPU被t2抢走了,此时num依然等于1,那么if条件通过,在执行过程中,依然可能被其他线程抢走CPU而进入阻塞状态,最后有可能卖出0,-1,-2这种票,这就是多线程存在的安全问题*/ class Ticket implements Runnable{ pu
线程安全问题出现的原因和解决方法
线程安全问题的原因:多线程对同一共享资源进行了多操作。
hashmap 线程安全问题分析
1.问题引入 开发过程使用了HashMap全局变量作为缓存 HashMap<String, String> mCacheMap 写(put)mCacheMap是线程R 读(get)mCacheMap是线程W Hashmap是非线程安全的集合类,在此场景中RW分属于两个不同线程,会存在读写数据不一致性问题。比如W线程正在更新HashMap过程中,R线程同时读取HashMap,由...
静态内部类-以及它的线程安全问题
最近用上了静态内部类,作为建造者模式. 自然就会有个疑问.静态内部类,会不会有线程安全的问题?因为静态的,那么这个静态内部类是所有的外部类实例共用一个呢(这样会有线程安全的问题), 还是每个实例有自己对应的静态内部类实例?(这样不会有线程安全的问题) 根据测试结果,静态内部成员类,没有出现线程安全的问题. com.itrus.portal.common.test.DuoShuXingGouZhao...
++运算符是线程安全的吗?
不是线程安全的操作。它涉及到多个指令,如读取变量值,增加,然后存储回内存,这个过程可能会出现多个线程交差
懒汉模式
首先写个单例: public class SingleDemo { private static SingleDemo s = null; private SingleDemo(){} public static SingleDemo getInstance(){ if(s == null){
springmvc是否是线程安全?
1.springmvc是单例模式的框架,但它是线程安全的,因为springmvc没有成员变量,所有参数的封装都是基于方法的,属于当前线程的私有变量. 因此是线程安全的框架 ...
java线程安全问题产生的原因
    最近工作中遇到不少多线程问题,但自己一直对多线程的理解比较表层。没有深入探究。正是最近工作中遇到的问题,致使我深入的去了解多线程安全问题为什么会产生。    多线程使我们的计算机可以同时运行多个程序,感觉很美好。    but,多线程的安全问题,到底怎么回事,到底怎么来的,对于有点理想主义的我来说这简直就是BUG。    网上有不少介绍多线程产生的原因的。我大致看了一遍,感觉都介绍的太粗线...
SSM线程安全问题简述
在最早的struts2的框架中,由于当时Spring还没有引入,项目被加载到tomcat里,这时候前台有1000个请求,tomcat就会给它1000个线程,由于struts2是多例的,当时后台接值是装载在变量里的,这个时候由于属性只有一份,容易造成覆盖。并且由于struts2是多例,所以他在每一次都要1000个对象来处理访问请求,所以,这前后要创建3000个对象。对于资源也是极大的损耗。后来是St...
java多线程(6)--多线程的安全问题总结
1、多线程安全问题分析   多线程安全问题原因是在cpu执行多线程时,在执行的过程中可能随时切换到其他的线程上执行。      在以上红色选中的三个部分,线程都有可能进行切换。只要cpu在这个三个地中的任何地方切换了,都可能导致错误数据出现,线程的不安全因素就有了。     造成错误数据的原因是多个线程可能出现同时访问num的情况。而任何一个线程在访问num的过程中都可以切换到其他的线程
SimpleDateFormat线程安全问题详解
                                              SimpleDateFormat线程安全问题详解          在平时的工作中,我们经常需要将日期在String和Date之间做转化,此时需要使用SimpleDateFormat类。使用SimpleDateFormat类的parse方法,可以将满足格式要求的字符串转换成Date对象;使用SimpleD...
Spring MVC Controller线程安全性问题
Spring MVC默认是单例模式,Controller、Service、Dao都是单例所以在使用不当存在一定的安全隐患。Controller单例模式的好处在与: 1. 提高性能,不用每次创建Controller实例,减少了对象创建和垃圾收集的时间 2. 根本就不需要多例 由于只有一个Controller的实例,当多个线程同时调用它的时候,它的成员变量就不是线程安全的。 当然在大多
静态变量初始化与线程安全
前言 c++11 担保了 static 变量的初始化线程安全。但是老的c++标准并没有担保,所以说老版本的编译器可能static 变量初始化在多线程的条件下会造成问题 c++ 98/03 关于静态初始化标准 简言而之,它只是担保了local static 变量的初始化发生于当该表达式第一次执行时。 The zero-initialization (8.5) of all local objects...
多线程的安全性,就是“线程安全问题都是由全局变量及静态变量引起的”
多线程的安全性,就是“线程安全问题都是由全局变量及静态变量引起的”。“线程安全问题都是由全局变量及静态变量引起的”,就这么简单。
ArrayList线程安全问题
验证思路 代码展示 程序运行结果 源码分析 总结 验证思路 新建若干个(1000)个线程,一个全局arraylist. 然后往ArrayList中添加东西。 代码和结果见下图 代码展示 //初始化全局的ArrayList private List list = new ArrayList<>(); //初始化用于控制线程同时开始的 countDownLatch p
Log4j打印日志添加线程ID
区分每个请求用户,更好的跟踪分析解决问题(用户登录之后加上userId更佳)
单线程、多线程以及线程安全个人理解
在这里,我不对多线程原理在做阐述。想了解的读者可以参考:https://blog.csdn.net/douglax/article/details/1532258这里,我将抽象的概念具体化,通过和尚挑水的故事对多线程做解释。1、首先定义和尚类Monkpackage com.stu.thread; /** * 和尚类 * @author jj * */ public class Monk ...
Java中变量的线程安全问题
[b]静态变量:线程非安全。 [/b] 静态变量即类变量,位于方法区,为所有对象共享,共享一份内存,一旦静态变量被修改,其他对象均对修改可见,故线程非安全。 [b]实例变量:单例模式(只有一个对象实例存在)线程非安全,非单例线程安全。[/b] 实例变量为对象实例私有,在虚拟机的堆中分配,若在系统中只存在一个此对象的实例,在多线程环境下,“犹如”静态变量那样,被某个线程修改后,其他线...
spring单例模式中,线程安全问题
@RequestMapping(value = &quot;getPsdbData&quot;, method = RequestMethod.POST) public Map&amp;lt;String, Object&amp;gt; getPsdbData(String key,HttpServletRequest request) { Map&amp;lt;String, Object&amp;gt; returnMap = new ...
Spring 并发访问的线程安全性问题
首先对于Spring的IOC来说,对象是由Spring来帮我们管理,也就是在Spring启动的时候,在Spring容器中,由Spring给我们创建的,Spring会帮我们维护,一般都是单例的,也就是一个对象。spring生成对象默认是单例的。通过scope属性可以更改为多例。 下面我们来一个网上的例子: package test; import java.util.Date; impor