log4j和log4j2区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了log4j和log4j2区别相关的知识,希望对你有一定的参考价值。
参考技术ALog4j使用一个. 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区别的主要内容,如果未能解决你的问题,请参考以下文章