精华内容
下载资源
问答
  • java获取线程id
    2021-02-12 20:46:02

    /**

    * 通过线程组获得线程

    *

    * @param threadId

    * @return

    */

    public static Thread findThread(long threadId) {

    ThreadGroup group = Thread.currentThread().getThreadGroup();

    while(group != null) {

    Thread[] threads = new Thread[(int)(group.activeCount() * 1.2)];

    int count = group.enumerate(threads, true);

    for(int i = 0; i < count; i++) {

    if(threadId == threads[i].getId()) {

    return threads[i];

    }

    }

    group = group.getParent();

    }

    return null;

    }

    线程id可以在开启线程时通过 thread.getId()进行获取并存入内存。

    随后可在其他位置通过线程id获取到线程并进行各种操作。

    中断线程:thread.interrupt();

    原文:https://www.cnblogs.com/emojio/p/11132354.html

    更多相关内容
  • Java 获取线程id

    2021-04-24 00:54:01
    /**/public class GetThreadTest extends Object implements Runnable {private ThreadID var;public GetThreadTest(ThreadID v) {this.var = v;}public static void main(String[] args) {Thre...

    package com.company;

    /*

    */

    public class GetThreadTest extends Object implements Runnable {

    private ThreadID var;

    public GetThreadTest(ThreadID v) {

    this.var = v;

    }

    public static void main(String[] args) {

    ThreadID tid = new ThreadID();

    GetThreadTest shared = new GetThreadTest(tid);

    try {

    Thread threadA = new Thread(shared, "threadA");

    threadA.start();

    Thread.sleep(500);

    Thread threadB = new Thread(shared, "threadB");

    threadB.start();

    Thread.sleep(500);

    Thread threadC = new Thread(shared, "threadC");

    threadC.start();

    } catch (InterruptedException x) {

    }

    }

    public void run() {

    try {

    print("var getThreadID =" + var.getThreadID());

    Thread.sleep(2000);

    print("var getThreadID =" + var.getThreadID());

    } catch (InterruptedException x) {

    }

    }

    private static void print(String msg) {

    String name = Thread.currentThread().getName();

    System.out.println(name + ": " + msg);

    }

    }

    class ThreadID extends ThreadLocal {

    private int nextID;

    public ThreadID() {

    nextID = 10001;

    }

    private synchronized Integer getNewID() {

    Integer id = new Integer(nextID);

    nextID++;

    return id;

    }

    protected Object initialValue() {

    print("in initialValue()");

    return getNewID();

    }

    public int getThreadID() {

    Integer id = (Integer) get();

    return id.intValue();

    }

    private static void print(String msg) {

    String name = Thread.currentThread().getName();

    System.out.println(name + ": " + msg);

    }

    }

    展开全文
  • java 获取线程id

    千次阅读 2017-05-04 16:04:00
    如何获取正在运行的线程ID? 解决方法 下面的示例演示如何使用getThreadId() 方法一个正在运行线程ID。 public class Main extends Object implements Runnable { private ThreadID var; public Main(Thread...

    如何获取正在运行的线程的ID?

    解决方法

    下面的示例演示如何使用getThreadId() 方法一个正在运行线程的ID。

    public class Main extends Object implements Runnable { private ThreadID var; public Main(ThreadID v) { this.var = v; } public void run() { try { print("var getThreadID =" + var.getThreadID()); Thread.sleep(2000); print("var getThreadID =" + var.getThreadID()); } catch (InterruptedException x) { } } private static void print(String msg) { String name = Thread.currentThread().getName(); System.out.println(name + ": " + msg); } public static void main(String[] args) { ThreadID tid = new ThreadID(); Main shared = new Main(tid); try { Thread threadA = new Thread(shared, "threadA"); threadA.start(); Thread.sleep(500); Thread threadB = new Thread(shared, "threadB"); threadB.start(); Thread.sleep(500); Thread threadC = new Thread(shared, "threadC"); threadC.start
    展开全文
  • java获取真实线程id

    千次阅读 2021-03-16 21:57:58
    以下代码获取的threadId其实是jvm里的线程id,和我们常说的linux系统线程id不一样public static void main(String[] a) {long tid = Thread.currentThread().getId();System.out.println("tid:"+ tid);}打印结果tid:...

    以下代码获取的threadId其实是jvm里的线程id,和我们常说的linux系统线程id不一样

    public static void main(String[] a) {

    long tid = Thread.currentThread().getId();

    System.out.println("tid:"+ tid);

    }

    打印结果

    tid:1

    从结果看明显id不是我们想要的系统线程id。系统线程id可以借助jni调用c去获取

    首先定义包含native方法的java文件GetThreadID.java

    public class GetThreadID {

    public static native int getTid();

    static {

    System.loadLibrary("GetThreadID");

    }

    }

    然后定义c函数文件GetThreadID.c

    #include

    #include

    #include

    #include "GetThreadID.h"

    JNIEXPORT jint JNICALL

    Java_GetThreadID_get_1tid(JNIEnv *env, jobject obj) {

    jint tid = syscall(__NR_gettid);

    return tid;

    }

    最后改下我们获取线程的测试类test.java

    public static void main(String[] a) {

    long tid = GetThreadID.getTid();

    System.out.println("tid:"+ tid);

    }

    执行如下命令编译和执行测试类

    JAVA_HOME2=$(readlink -f /usr/jdk/bin/javac | sed "s:bin/javac::")

    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.

    javac GetThreadID.java

    javah GetThreadID

    gcc -I${JAVA_HOME2} -fPIC -shared GetThreadID.c -o libGetThreadID.so

    javac test.java

    java test

    最后打印了系统线程id

    tid:13141

    展开全文
  • public static void main(String[] args) {Thread t = new Thread(new InnerRunnable());t.start();System.out.println(" thread: " + t);...// 一:通过线程组遍历获得线程Thread s = findThread(...
  • java线程 根据线程名称获取线程

    千次阅读 2020-08-21 10:48:17
    * 根据线程名称获取线程 * @param threadName * @return */ public Thread getThreadByName(String threadName) { for (Thread t : Thread.getAllStackTraces().keySet()) { if (t.getName().equals...
  • 以下实例演示了如何使用 getThreadId() 方法获取线程id:public class Main extends Object implements Runnable { private ThreadID var; public Main(ThreadID v) { this.var = v; } public void run() { ...
  • 根据线程名获取线程及停止进程 线程的命名与获取名称方法 设置名称可以使用Thread类的如下方法: *构造方法:public Thread (Runnable Target,String name) *设置名字:public final void setName(String...
  • 如何从线程池中获取线程ID

    千次阅读 2021-03-08 02:26:04
    接受的答案回答有关获取a线程ID的问题,但它不会让您执行“Y的线程X”消息。线程ID是跨线程唯一的,但并不一定从0或1此处开始是一个示例匹配的问题:import java.util.concurrent.*;class ThreadIdTest {public ...
  • Java如何获取当前线程

    千次阅读 2021-03-08 20:14:13
    前言Java 中经常会遇到要获取当前线程的情况,这时一般我们就会通过Thread.currentThread()来获取,接下去就看看执行该语句在 JVM 中做了什么吧。简单例子以下是一个简单的例子,获取当前线程并打印线程名称,输出是...
  • Java线程(三)- 线程的唯一标识是什么? 数据库里头,我们建表的时候通常唯一标识叫什么名字?没错,叫ID,Thread对象也有ID,可以通过getId来获取。这个ID是自增长的,我们可以查看Thread源代码,下面是我截取...
  • 最近有个功能要查看所有线程的运行时间,走了一些弯路,在此总结一下。 1.获取所有线程的CPU执行时间 这里需要用到 java.lang.management.ThreadMXBean;
  • 找到linux获得java线程ID的方法

    千次阅读 2011-07-26 10:23:48
    网上大部分资料提供找到线程ID的方法多限于java程序内部线程对象的ID,而不是整个系统的线程ID,本来寄希望于 线程ID=进程ID+内部线程对象ID, 但实验结果表明这个公式不成立,后来问师兄,师兄说在windows下内部...
  • I know we can have ‘parents’ and ‘children’ when we are ...正如Jon所说,线程无法知道其父线程.这很重要,因为如果每个子节点都引用了分叉它们的线程,那么这将意味着内存中存在许多不必要的线程结构. GC无法回...
  • 现在项目中有这样一个需求,政府需要对辖区内的...需要中断这个线程,我在开线程的时候已经有了线程Id,看网上说ThreadGroup是可以的,但是已经被废弃了,不推荐使用,不知道有没有其他办法中断某个具体的线程的,求教
  • 万字图解Java线程

    万次阅读 多人点赞 2020-09-06 14:45:07
    java线程我个人觉得是javaSe中最难的一部分,我以前也是感觉学会了,但是真正有多线程的需求却不知道怎么下手,实际上还是对多线程这块知识了解不深刻,不知道多线程api的应用场景,不知道多线程的运行流程等等,...
  • 因为创建线程是非常消耗资源的,所以如果要创建线程比较频繁,我们可以创建一个线程池去存贮线程,再需要的时候去线程池内拿取就行,这样可以节约资源提升性能。 代码如下: import java.util.concurrent....
  • Java获取当前进程ID(PID)

    千次阅读 2021-03-07 21:38:30
    Java开始提供包:java.lang.managementjava.lang.management 提供了一系列的用来在运行时管理和监督JVM和OS的管理接口今天将用到的就是这个包中的一个类:ManagementFactory获取pid的程序代码如下import java.lang....
  • JAVA线程并发

    千次阅读 2022-02-17 14:41:51
    JAVA线程实现/创建方式 1.继承Thread类 Thread类本质上时实现了Runnable接口的一个实例,代表一个现成的实例。启动线程的唯一方法就是通过Thread类的start()实例方法。start()方法是一个native方法,它将启动一个...
  • //获取当前进程ID String processName = java.lang.management.ManagementFactory. getRuntimeMXBean ().getName(); System. out .println( "当前进程ID:" +Long. parseLong (processName.split( "@" )[ 0 ]));
  • Java运行状态分析2:获取线程堆栈信息基本概念出现内存泄漏或者运行缓慢场景,有时候无法直接从业务日志看出问题时候,需要分析jvm内存和线程堆栈线程堆栈信息主要记录jvm线程在某时刻线程执行情况,分析线程状态...
  • 根据进程ID获取进程的内存使用量,CPU使用率,线程个数据信息,GetSysInfo
  • java线程执行任务(工具升级版)

    千次阅读 2022-03-10 16:17:59
    昨天写的java线程执行任务(工具)但是不能符合顺序执行计划的场景,下面升级一下原工具 [java线程执行任务(工具)]: https://haohaoding.blog.csdn.net/article/details/123377795
  • Android中获取进程号,线程号,进程ID,线程ID相关信息 package com.danny.myapplication; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.os.Process; import ...
  • 实现 Java线程并发控制框架

    千次阅读 2021-03-14 16:14:53
    2006 年 8 月 14 日Java 提供了语言级别的线程支持,所以在 Java 中使用多线程相对于 C,C++ 来说更简单便捷,但本文并不是介绍如何在 Java 中使用多线程来来解决诸如 Web services, Number crunching 或者 I/O ...
  • Java线程 - 锁

    千次阅读 2022-03-28 15:31:49
    Java线程 - 锁 三性 可见性 指的是线程之间的可见性,一个线程对状态的修改,对其他线程是可见的。在 Java中 volatile、synchronized 和 final 实现可见性。 原子性 如果一个操作是不可分割的,我们则称之为...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 268,384
精华内容 107,353
关键字:

java获取线程id