线程基础

一、线程状态

二、线程的中断机制

每个线程都有一个 打扰标志。这里分两种情况:

  1. 线程在sleep,wait,join,lock.lockInterruptibly, 此时如果别的进程调用此进程的 interrupt()方法,此线程会被唤醒并被要求处理InterruptedException;(thread在做IO操作时也可能有类似行为,见java thread api)

  2. 此线程在运行中, 则不会收到提醒。但是 此线程的 “打扰标志”会被设置, 可以通过isInterrupted()查看并 作出处理。

三、Linux环境中的分析方法

  1. ps -ef | grep java 找到你的java程序的进程id, 定位 pid

  2. top -Hp $pid, shift+t 查看耗cpu时间最多的几个线程, 记录下线程ID并转换成16进制小写 比如 : 0x12ef

  3. kill -3 $pid 触发tomcat的thread dump(jstack -p 进程号),找到tomcat的catalin.out 日志, 把 上面几个线程对应的代码段拿出来.

你可能感兴趣的:(线程基础)