① java怎么得到当前线程的启动线程id
publicclass线程id
{
publicstaticvoidmain(String[]args)
{
System.out.println(" ==========多线程怎么查看当前线程id========== ");
init();
}//初始化!
privatestaticvoidinit()
{
for(inti=0;i<2;i++)
{
newThread(newTestRunnable()).start();
}
}
}
{
//简单测试直接用了静态,偷懒了!
privatestaticinti=10;
publicvoidrun()
{
show();
}
synchronizedvoidshow()
{
while(i>=1)
System.out.println("当前执行的线程Id是:"+Thread.currentThread().getName()+"---->"+i--+" ");
}
}
② java 多线程怎么查看当前线程id
publicclass线程id
{
publicstaticvoidmain(String[]args)
{
System.out.println(" ==========多线程怎么查看当前线程id========== ");
init();
}//初始化!
privatestaticvoidinit()
{
for(inti=0;i<2;i++)
{
newThread(newTestRunnable()).start();
}
}
}
{
//简单测试直接用了静态,偷懒了!
privatestaticinti=10;
publicvoidrun()
{
show();
}
synchronizedvoidshow()
{
while(i>=1)
System.out.println("当前执行的线程Id是:"+Thread.currentThread().getName()+"---->"+i--+" ");
}
}
③ 在java中可否使用线程名或其ID号获取其引用
其实你问的应该是为什么直接写Thread。
先看下api上如此写:
currentThread
public static Thread currentThread()
返回对当前正在执行的线程对象的引用。
可见这时个静态方法,你这么理解更好点:你在哪个线程调用的我(currentThread),我就给你返回哪个线程。跟父子其实没有关系的,你在父中调用我,我就返回你说的父线程,你在子调用我就返回子线程,你在main主线程调用,我就返回主线程。也就是说你cpu正在运行哪个线程。如图:
④ Java线程getID()的困惑
你用getName方法就是从0开始了,一个程序中还有其他线程在运行,例如执行main方法的主线程,垃圾回收机制啥的,所以你创建的这些线程不会是从0开始的。
⑤ Java如何获取正在运行的线程的Id
使用:Thread.currentThread().getName() 就可以了
比如会输出:pool-1-thread-7
⑥ JAVA根据线程ID,如何根据这个ID 停止一个线程
应该能通过ID拿到那个线程对象的吧。然后再通过改变循环条件就能停止线程。只要runnable里的循环停了线程也就停了。
⑦ 这段java 多线程代码为什么id是1的线程一直在等待
从代码来看,每个线程的o都不是同一个。1线程的o.wait()后,只执行了2线程的o.notifyAll()。所以1线程会一直处于等待中。如果要达到你的要求,修改构造函数,去掉o = new Object();这句。因为这句会在每次初始化一个新线程时,改变o的指向。
⑧ java中可以根据线程名而不是id获得想要的线程吗
可以的。
但是要先获取线程组,然后遍历线程组树,获取根线程组,然后再遍历所有线程,并分别判断所有的线程的id或者name,也就是说你可以通过id或者name来获取一个线程。
⑨ java 中thread 获取线程id为什么默认从10开始
从源码中分析线程的id是从0开始的
⑩ Java 中怎么获取一份线程 mp 文件
当服务器挂起,崩溃或者性能底下时,就需要抓取服务器的线程堆栈(Thread Dump)用于后续的分析.
Thread mp提供了当前活动的线程的快照.它提供了JVM中所有Java线程的栈跟踪信息
有很多方式可用于获取Thread Dump,一些是操作系统特定的命令.
Windows:
1. 转向服务器的标准输出窗口并按下Control + Break组合键,之后需要将线程堆栈复制到文件中
UNIX/ Linux
首先查找到服务器的进程号(process id),然后获取堆栈.
1. ps –ef| grep java
2. kill -3 <pid>
注意一定要谨慎,一步不慎就可能让服务器进程被杀死!
JVM自带的工具获取线程堆栈:
JDK自带命令行工具获取PID并做ThreadDump:
1. jps
2.jstack <pid>
使用JVisualVM:
Threads标签页 →ThreadDump按钮
WebLogic自带的获取thread mp的工具:
1. webLogic.Admin工具
a.打开命令提示符,通过运行<DOMAIN_HOME>/bin/setDomain.env设置相关类路径
b.执行下面的命令
java weblogic.Admin -url t3://localhost:7001 -username weblogic -password weblogic1 THREAD_DUMP
注意: Thread Dump会打印到标准输出,如nohup日志或者进程窗口.
2.使用 Admin Console
a.登录Admin Console ,点击对应的服务器
b.点击ServeràMonitoringàThreads
c.点击: Dump Thread Stack按钮
3.使用WLST (WebLogic Scripting Tool)
connect(‘weblogic’,'weblogic1’,’t3://localhost:7001’)
cd(‘Servers’)
cd(‘AdminServer’)
threadDump()
disconnect()
exit()
注意:线程堆栈将会保存在运行wlst的当前目录下.
4.使用utils.ThreadDumper
用法:
C:eawlserver_10.3serverlib>java -cp weblogic.jar utils.ThreadDumper
Broadcast Thread mps disabled: must specify weblogic.debug.mpThreadAddr and
weblogic.debug.mpThreadPort
Exception in thread "main" java.lang.IllegalArgumentException: Port out of range
:-1
at java.net.DatagramPacket.setPort(Unknown Source)
at java.net.DatagramPacket.<init>(Unknown Source)
at java.net.DatagramPacket.<init>(Unknown Source)
at utils.ThreadDumper.sendDumpMsg(ThreadDumper.java:124)
at utils.ThreadDumper.main(ThreadDumper.java:145)
5.如果服务器是作为Windows服务的方式运行,请运行下列命令:
WL_HOMEineasvc -mp -svcname:service-name
$JAVA_