`
我改名了
  • 浏览: 87758 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

java Thread start() 特性

阅读更多

写了两个简单的类。本来写这两个类的初衷是为了 验证 log4j 异步打印日志时的 MDC 衔接问题。但是由于疏忽,有个地方写错了。

public class TestLog {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		for (int i = 1; i <= 5; i++) {
			LogThread lt = new LogThread("aaa_" + i);
			lt.setName("aaa_" + i);
			lt.start();
		}
	}

}

 

public class LogThread extends Thread{
	String message;
	private Logger log = Logger.getLogger(this.getClass().getName());
	public LogThread(String tranId) { 
		this.message =  tranId;
		MDC.put("tranId", message);
	}
	@Override
	public void run() {
			log.info(message+"_"+MDC.get("tranId"));
	}
}

 运行结果如下:

[105614.713][INFO ](aaa_1) aaa_1_null  [LogThread.java:18 ]
[105614.713][INFO ](aaa_4) aaa_4_aaa_3  [LogThread.java:18 ]
[105614.713][INFO ](aaa_3) aaa_3_aaa_2  [LogThread.java:18 ]
[105614.713][INFO ](aaa_2) aaa_2_aaa_1  [LogThread.java:18 ]
[105614.713][INFO ](aaa_5) aaa_5_aaa_4  [LogThread.java:18 ]

能看出什么地方写错了吗?

分享到:
评论

相关推荐

    java8集合源码分析-java8-learning:Java8新特性学习

    Java8特性 [TOC] 1. Lambda 表达式 与传统匿名内部类写法的对比 无返回值 // 传统写法 new Thread(new Runnable() { @Override public void run() { System.out.println("worker thread is running"); } }).start();...

    java8源码-Java8Example:Java8的一些实用特性

    java8 源码 JAVA8实用范例 抛砖引玉!写出更简洁优美的代码 简介 自java5以来最大的版本变动 很大程度增强java类库 主要目标 更高的开发效率 更高代码可用性 更好的利用多核和多处理器系统 Lambda表达式 函数式接口:...

    JAVA面试题最全集

    调用Thread类的destroy()方法有什么后果? 58.多线程,用什么关键字修饰同步方法?stop()和suspend()方法为何不推荐使用? 59.使用socket建立客户端与服务器的通信的过程 60.JAVA语言国际化应用,Locale类,...

    java 面试题 总结

    JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用...

    java面试宝典

    189、Can a Java Thread be started from Servlet class, and what will be the implications? 45 190、What is HTTP Session tracking and why is it important? 45 191、What is session management, and how is ...

    java线程池常用方法.docx

    在Java5之后,并发线程这块发生了根本的变化,最重要的莫...在Java5以后,通过Executor来启动线程比用Thread的start()更好。在新特征中,可以很容易控制线程的启动、执行和关闭过程,还可以很容易使用线程池的特性。

    java核心知识点整理.pdf

    25 JAVA8 与元数据.................................................................................................................................25 2.4. 垃圾回收与算法 .................................

    超级有影响力霸气的Java面试题大全文档

    sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。 wait是Object类的方法,对此对象调用wait方法导致本线程...

    JAVA核心知识点整理(有效)

    25 JAVA8 与元数据.................................................................................................................................25 2.4. 垃圾回收与算法 .................................

    php多进程框架-模拟java多线程接口simple-fork-php.zip

    simple-fork-php 是基于 PCNTL 扩展的进程管理包,接口类似与 Java 的 Thread 和 Runnable 为什么要写 SimpleFork 多进程程序的编写相比较多线程编写更加复杂,需要考虑进程回收、同步、互斥、通信等问题。...

    最全面试笔试整合(比较齐全包括网页,文档。。。)

    7 说出ArrayList,Vector, LinkedList的存储性能和特性 ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素...

    千方百计笔试题大全

    189、Can a Java Thread be started from Servlet class, and what will be the implications? 45 190、What is HTTP Session tracking and why is it important? 45 191、What is session management, and how is ...

    net学习笔记及其他代码应用

    答:启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。 40.接口是否可...

Global site tag (gtag.js) - Google Analytics