log4j和log4j2区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了log4j和log4j2区别相关的知识,希望对你有一定的参考价值。

参考技术A

Log4j使用一个. properties文件作为主配置文件,但是现在log4j 2已经放弃了这种方法,使用。xml,。json或者。做这件事。也许这也是技术发展的一种必然。毕竟属性文件的可读性真的有点差。

Callable和Runnable接口的区别

参考技术A 区别1: 两者最大的区别,实现Callable接口的任务线程能返回执行结果,而实现Runnable接口的任务线程不能返回执行结果

注意点:Callable接口支持返回执行结果,此时需要调用FutureTask.get()方法实现,此方法会阻塞线程直到获取“将来”的结果,当不调用此方法时,主线程不会阻塞

区别2:Callable接口实现类中run()方法允许将异常向上抛出,也可以直接在内部处理(try...catch); 而Runnable接口实现类中run()方法的异常必须在内部处理掉,不能向上抛出

Demo1: Callable接口测试
package com.cc.io.currentthread;

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

public class CallableTest
public static void main(String[] args) throws ExecutionException, InterruptedException
Callable<String> callable = new CallableImpl(" my callable test");
FutureTask<String> task = new FutureTask<>(callable);



class CallableImpl implements Callable<String>



Demo2: Runnable接口测试
package com.cc.io.currentthread;

public class RunnableTest
public static void main(String[] args)
Runnable runnable = new RunnableImpl("my runnable test");
Long beginTime = System.currentTimeMillis();
new Thread(runnable).start();
Long endTime = System.currentTimeMillis();
System.out.println("cast:" + (endTime-beginTime)/1000);



class RunnableImpl implements Runnable

以上是关于log4j和log4j2区别的主要内容,如果未能解决你的问题,请参考以下文章

浅谈Log4j和Log4j2的区别

浅谈Log4j和Log4j2的区别

浅谈Log4j和Log4j2的区别

浅谈Log4j和Log4j2的区别

浅谈Log4j和Log4j2的区别

log4j2的配置和使用以及与log4j的区别