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问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
SpringMvc线程安全问题(个人感悟)
由于springmvc是singleton的,所以假如存在全局变量时就容易导致线程安全问题,线程安全问题其实归根结底就是数据共享问题,这就又牵扯到java虚拟机的内存结构了,每一个线程都会有自己的工作内存,还有一块公用的内存,共享内存,我们定义好的一个变量放在共享内存中,每当一个线程对全局变量进行操作时,都会与共享内存中的保存的全局变量的值进行比较。Spring MVC默认是单例模式,Contro...
servlet是否存在线程安全问题
        今天老师问了一句,servlet存在线程安全问题吗,心想着servlet不是单例的嘛,每个线程在调用的时候都会为实例对象分配独立的引用。我就以为servlet属于线程安全的。晚上自己再网上查看了一下,发现servlet不是安全的。        下面就给大家介绍一下servlet线程安全问题        首先,默认的servlet是非线程安全的,servlet是单例模式,只产生一...
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线程安全
多线程中使用静态方法存在线程安全的问题
类的成员分两类,静态成员(static member)和实例成员(instance menber),静态成员属于类,实例成员则属于对象,即类的实例。    我们知道,静态字段和静态方法的调用都是通过类来调用的,静态方法不会对特定的实例操作,只能调用调用类中的其他属性和静态方法,不能调用类中的非静态属性和非静态方法。实例方法可以对特定的实例操作,既能访问静态属性和静态方法,也能访问实例属性和实例方
单例模式中可能存在的一些问题(线程安全问题)
单例的设计模式中,一些代码的写法会存在线程安全的问题,举例如下:(1)单例模式的懒汉式[线程不安全,不可用] public class Singleton { private static Singleton instance=null; private Singleton() {}; ...
单链表线程安全性讨论
标准库里面的vector,list都没有声明是线程安全的,在多线程读写的时候,一般都需要使用临界区,读写锁等辅助手段。 如果一个队列有以下限制: 1, 只在尾部追加数据; 2, 可以从任何位置开始遍历; 3, 以链表(node * next)的形式存储; 4, 队列的节点不可以删除(有些应用场合需要这样的数据结构,比如,股票的逐笔成交队列)。 那么,在不加锁的情况下,在
(五)servlet线程安全问题
servlet线程安全问题
局部变量线程安全的理解
如何理解局部变量线程安全
单例模式涉及到的线程安全问题
1.单例模式单例模式分为饿汉式和懒汉式,也即 即时加载和懒加载的分别 下面分别看两个形式:1.1饿汉式class SingleHungry{ //1.首先私有化构造器,这样使该类不可以被其他对象创建对象 //2.自己内部创建对象 //3.写一个静态方法让外部调用实例 private static Single s = new Single(); //上面一句
局部变量线程安全问题
局部变量线程安全问题 只看楼主 收藏 回复 mincike 沝 2 求大神给解释下 回复 1楼 2016-02-01 14:29 举报 |个人企业举报垃圾信息举报
局部变量一定线程安全吗
局部变量, 如果是基本类型或是包装类型, 依然不能通过多线程改变其值, 如果是对象, 则其属性值是线程不安全的 demo1: public void compute(LocalDate date){ //在切换租户时,只有当前线程的第一个租户id设置有效,或者说一个线程内无法切换数据源 TenantContext.set("saas_base"); ...
Springmvc中在controller注入request会有线程安全问题吗
@Controller public class AController{ @Autowire HttpServletRequest request; @RequestMapping("/test") public Result test(){ System.out.println(request.toString());
web开发中的线程安全
在web开发中,要关注由于并发访问所导致的对某一同一个值的修改,否则信息会造成泄漏servlet是在多线程环境下的。即可能有多个请求发给一个servelt实例,每个请求是一个线程。 struts下的action也类似,同样在多线程环境下。可以参考struts user guide: http://struts.apache.org/struts-action/userGuide/buildin...
Java中静态方法是否属于线程安全
对Java中的静态修饰符还是不太了解.如果定义个静态方法,方法内部不涉及调用外部变量,比如说这个方法是为了解决某个问题的一个工具方法,就像"Array.getLong(arg0, arg1)"这种一样,那么这个静态方法在遇到多线程问题的时候是否会存在安全隐患呢? 我写了下面一段代码,用两个线程不停的去调用类中的一个静态方法,试问:Sytem.err.println()中的内容是否会打印出来?
线程安全问题及解决办法
一.什么时候会出现线程安全问题? 在单线程中不会出现线程安全问题,而在多线程编程中,有可能会出现同时访问同一个资源的情况,这种资源可以是各种类型的的资源: 一个变量、一个对象、一个文件、一个数据库表等,而当多个线程同时访问同一个资源的时候,就会存在一个问题: 由于每个线程执行的过程是不可控的,所以很可能导致最终的结果与实际上的愿望相违背或者直接导致程序出错。 举个简单的例子:   现
servlet线程安全问题的详解
摘 要:介绍了Servlet多线程机制,通过一个实例并结合Java 的内存模型说明引起Servlet线程不安全的原因,给出了保证Servlet线程安全的三种解决方案,并说明三种方案在实际开发中的取舍。      Servlet/JSP技术和ASP、PHP等相比,由于其多线程运行而具有很高的执行效率。由于Servlet/JSP默认是以多线程模式执行的,所 以,在编写代码时需要非常细致地考虑多线程
什么时候该考虑线程安全问题 侵立删
转自:https://www.cnblogs.com/bug-zhang/p/7624254.html创建和启动Java线程Java线程是个对象,和其他任何的Java对象一样。线程是类的实例java.lang.Thread,或该类的子类的实例。除了对象之外,java线程还可以执行代码。创建和启动线程在Java中创建一个线程是这样完成的: Thread thread = new Thread();要...
Java多线程知识点总结——进阶篇(二)之判断程序是否有线程安全问题
需求: 银行有一个金库。 有两个储户分别存300员,每次存100,存3次。 目的:该程序是否有安全问题,如果有,如何解决? 看如下代码,思考会出现什么问题: class Bank { private int sum; public void add(int n) { sum = sum + n; try {Thread...
线程安全问题的分析及代码示例
资源类:Student 设置学生数据:SetThread(生产者) 获取学生数据:GetThread(消费者) 测试类:StudentDemo  * 线程安全问题的判断依据:  *  A:是否是多线程环境 是  *  B:是否有共享数据  是  *  C:是否有多条语句操作共享数据   是  *  若同时满足以上三个条件,则可判定程序可能出现线程安全问题
js 中线程及线程安全
for (var i = 0; i < 10; i++) { setTimeout(function () { console.log(i); },0); } i = 10 这是因为 i 的作用域被提升为全局 只要将var 改成 let 就可以了。...
什么情况下会有线程安全问题
Q:什么情况下会有线程安全问题 A:当某个实现多线程的线程类中有实例变量时 ps:有状态,无状态对象是什么概念 有状态就是有数据存储功能。有状态对象(Stateful Bean),就是有实例变量的对象 ,可以保存数据,是非线程安全的。在不同方法调用间不保留任何状态。 无状态就是一次操作,不能保存数据。无状态对象(Stateless Bean),就是没有实例变量的对象 .
懒汉式单例模式的线程安全问题
新建一个单例模式类和一个多线程测试类 public class Test24 implements Runnable { public void run() { System.out.println(TestSingleton.getInstance()); } public static void main(String[] args) { Test24 test1 = new
关于java线程安全问题
线程:负责一个进程中的代码执行。线程是进程中的一个执行路径。 线程安全问题出现的根本原因: 1. 存在着两个或者两个以上的线程。 2. 多个线程共享了着一个资源, 而且操作资源的代码有多句。 线程安全问题的解决方案: 1. 使用同步代码块 格式: synchronized(锁对象){ 需要被同步的代码; } 线程的生命周期状态图(线程总共有图
在多线程中使用静态方法时候会有线程安全问题
转载至:甜菜波波的博客  地址:http://www.cnblogs.com/tiancai/p/5417767.html 再次表示对网上知识贡献力量的感谢,是你们的无私奉献提高了国家软件开发的整体水平。 类的成员分为两类,静态成员(static member)和实例成员(instance member)。静态成员属于类,实例成员则属于对象,即类的实例。     简单讨论一下在一
HashMap线程安全问题及解决方案
为什么线程不安全个人觉得 HashMap 在并发时可能出现的问题主要是两方面,首先如果多个线程同时使用put方法添加元素,而且假设正好存在两个 put 的 key 发生了碰撞(根据 hash 值计算的 bucket 一样),那么根据 HashMap 的实现,这两个 key 会添加到数组的同一个位置,这样最终就会发生其中一个线程的 put 的数据被覆盖。第二就是如果多个线程同时检测到元素个数超过数组...
log4j2异步多线程打印
1.该工程为maven构建,要有maven环境 2.支持异步打印 3.支持多线程打印
单例模式及线程安全问题
什么是设计模式?设计模式又有什么作用? 在漫漫的程序设计道路之上,前辈们通过自己的教训和经验,总结出一套合理且高效的设计思路,我们称之为模式,理解和使用模式来进行项目的开发,能在很大程度上减少时间的无端浪费和以及提高代码的复用性和可扩展性。 今天,我们就来谈一谈java23模式中的一种—单例模式。 单例模式,顾名思义就是只有一个唯一的实例化对象,那么问题就来了,我们都知道任何
SpringMVC线程安全问题
spring生成对象默认是单例(也就是一个对象)的。通过scope属性可以更改为多例。   <bean id="singleton" class="java.util.Date" scope="singleton"></bean>  <!--单例--> <bean id="prototype" class="java.
hashmap 线程安全问题分析
1.问题引入 开发过程使用了HashMap全局变量作为缓存 HashMap<String, String> mCacheMap 写(put)mCacheMap是线程R 读(get)mCacheMap是线程W Hashmap是非线程安全的集合类,在此场景中RW分属于两个不同线程,会存在读写数据不一致性问题。比如W线程正在更新HashMap过程中,R线程同时读取HashMap,由...
Java多线程(4)—— 实例变量与线程安全
实例变量 多线程中实例变量的两种情况: 不共享数据:每个线程访问各自的实例变量。 共享数据:多个线程访问同一个变量。 不共享数据 package com.myThread; /** * 线程继承类 * @author admin */ public class MyThread extends Thread { private int count = 5; public MyThre...
如何确定是否应该上锁?即如何判断是否有线程安全问题
①看有没有共享数据 ②看是不是有多条语句操作共享数据 ③看是不是在多线程环境中
单线程、多线程以及线程安全个人理解
在这里,我不对多线程原理在做阐述。想了解的读者可以参考:https://blog.csdn.net/douglax/article/details/1532258这里,我将抽象的概念具体化,通过和尚挑水的故事对多线程做解释。1、首先定义和尚类Monkpackage com.stu.thread; /** * 和尚类 * @author jj * */ public class Monk ...
线程安全问题出现的原因和解决方法
线程安全问题的原因:多线程对同一共享资源进行了多操作。
慎用Servlet成员变量-导致线程安全问题
最近项目中发现某些Servlet在做交易时, 其流水号的会发生变化, 导致交易异常, 经查原因是使用了Servlet类的私有成员变量, 在并发的情况下回出现该问题. Servlet生存周期一般是应用启动时实例化, 应用关闭时才结束, 因此所有访问该Servlet的request都是使用在同一个Servlet实例, 在并发的情况下, 两个request在两个线程中使用同一个Servlet, 这
servlet线程安全问题——ThreadLocal模式
线程安全的概念范畴:        线程安全,指的是在多线程环境下,一个类在执行某个方法时,对类的内部实例变量的访问是安全的。如果代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。        线程安全问题都是由全局变量及静态变量引起的。对于下面的两种变量,不存在任何线
单例模式在多线程中的安全问题
前言: Java的单例模式是一种常见的设计模式 单例模式有以下特点:   1、单例类只能有一个实例。   2、单例类必须自己创建自己的唯一实例。   3、单例类必须给所有其他对象提供这一实例。 单例模式的适用场景: 1.对于那种经常实例化但是过一会儿就被销毁的对象适合使用单例模式。 2.对于创建对象需要消耗很多资源的对象。如:数据库连接池对象,线程池对象等 3.只需要一个对象保证全局的一致性的。如...
Java线程安全问题理解
进程 电脑会有很多单独运行的程序,每个程序有一个独立的进程,而进程之间是相互独立存在的。如下图中的Chrome浏览器等等。 线程 进程想要执行任务就需要依赖线程。换句话说,就是进程中的最小执行单位就是线程,并且一个进程中至少有一个线程。 串行:其实是相对于单条线程来执行多个任务来说的,我们就拿下载文件来举个例子:当我们下载多个文件时,在串行中它是按照一定的顺序去进行下载的,也就是说,必...
java 成员变量的线程安全
           本文讲解的是关于java成员变量的线程安全问题,包括静态变量和实例变量。静态变量好理解,所有实例都共享一份内存,任何对静态变量的修改都会引发线程安全问题。然而,对于实例变量,在大多数情况下的访问和修改都是线程安全的。但是,当这个类,在系统里面被实现为单例模式时,由于整个系统中,只存在一份对象内存,所以,系统的各线程对该实例变量的修改则又会引发线程安全问题。这种情况别说是jav
文章热词 设计制作学习 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 java的线程学习 python线程学习