精华内容
下载资源
问答
  • java 获取线程id

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

    如何获取正在运行的线程的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

    转载于:https://www.cnblogs.com/firstdream/p/6807675.html

    展开全文
  • java根据线程id获取线程

    千次阅读 2019-07-04 14:43:00
    /** * 通过线程组获得线程 * * @param threadId * @return */ public static Thread findThread(long threadId) { ThreadGroup group = Thread.currentThread().getThread...
        /**
         * 通过线程组获得线程
         *
         * @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

    展开全文
  • 以下实例演示了如何使用 getThreadId() 方法获取线程id:public class Main extends Object implements Runnable { private ThreadID var; public Main(ThreadID v) { this.var = v; } public void run() { ...

        以下实例演示了如何使用 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();
        } catch (InterruptedException x) {
        }
      }
    }
     
    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);
      }
    }

        以上代码运行输出结果为:

    threadA: in initialValue()
    threadA: var getThreadID =10001
    threadB: in initialValue()
    threadB: var getThreadID =10002
    threadC: in initialValue()
    threadC: var getThreadID =10003
    threadA: var getThreadID =10001
    threadB: var getThreadID =10002
    threadC: var getThreadID =10003
    展开全文
  • 根据线程名获取线程及停止进程 线程的命名与获取名称方法 设置名称可以使用Thread类的如下方法: *构造方法:public Thread (Runnable Target,String name) *设置名字:public final void setName(String...

        根据线程名获取线程及停止进程    

    1. 线程的命名与获取名称方法

       

    设置名称可以使用Thread类的如下方法:
    
    *构造方法:public Thread (Runnable Target,String name)
    
    *设置名字:public final void setName(String name)
    
    获取线程名城:
    
    *当前运行的线程名称:Thread.currentThread().getName()
    
    *取得名字:public final String getName()

     

    1. 创建运行线程

      public class MyThread extends Thread{
      
          @Override
      
          public void run() {
      
              try {
      
                  sleep(Constants.OPERATION_AMOUNT_THREAD_TIME);
      
                  /**
      
                      逻辑代码
      
                  */
      
              } catch (InterruptedException e) {
      
                  Logger.info("线程:" + Thread.currentThread().getName()+"结束.");
      
                  System.out.println(e.getMessage());
      
              }
      
          }
      
      }
      
      
      
      MyThread oat= newMyThread ();
      
              oat.setName("110");
      
              System.out.println("创建线程"+oat.getName());
      
      oat.start();

       

     

    1. 根据线程名获取线程

      1. 获取所有线程

        public class Main extends Thread {
        
        		public static void main(String[] args) {
        
        			Main t1 = new Main();
        
        			t1.setName("thread1");
        
        			t1.start();
        
        			ThreadGroup currentGroup =
        
        					Thread.currentThread().getThreadGroup();
        
        			int noThreads = currentGroup.activeCount();
        
        			Thread[] lstThreads = new Thread[noThreads];
        
        			currentGroup.enumerate(lstThreads);
        
        			for (int i = 0; i < noThreads; i++)
        
        				System.out.println("线程号:" + i + " = " + lstThreads[i].getName());
        
        		}
        
        	}

         

    以上代码运行输出结果为:

    线程号:0= main

    线程号:1= thread1

     

    1. 对对应的线程进行interrupt() (安全结束sleep中的进程的方式)

    对sleep中的线程进行interrupt()会抛异常 走catch方法 run方法正常结束 安全的停止线程。

    可根据自己的业务进程设计停止线程的方式 ,不建议使用stop方法 ,因为存在数据的一致性问题,并且stop方法已经呗java过期了。

    停止进程的方式详见http://blog.csdn.net/weixin_36795183/article/details/79227759

        

    //杀线程

        

    	public static boolean killThreadByName(String name) {
    
    		ThreadGroup currentGroup = Thread.currentThread().getThreadGroup();
    
    		int noThreads = currentGroup.activeCount();
    
    		Thread[] lstThreads = new Thread[noThreads];
    
    		currentGroup.enumerate(lstThreads);
    
    		Logger.info("现有线程数" + noThreads);
    
    		for (int i = 0; i < noThreads; i++) {
    
    			String nm = lstThreads[i].getName();
    
    			Logger.info("线程号:" + i + " = " + nm);
    
    			if (nm.equals(name)) {
    
    				lstThreads[i].interrupt();
    
    				return true;
    
    			}
    
    		}
    
    		return false;
    
    	}

     

    展开全文
  • Java如何获取当前线程

    万次阅读 2018-07-05 08:26:48
    Java 中经常会遇到要获取当前线程的情况,这时一般我们就会通过Thread.currentThread()来获取,接下去就看看执行该语句在 JVM 中做了什么吧。 简单例子 以下是一个简单的例子,获取当前线程并打印线程名称,输出...
  • Java线程面试题

    千次阅读 2019-10-30 13:58:47
    在典型的Java面试中, 面试官会从线程的基本概念问起, 如:为什么你需要使用线程, 如何创建线程,用什么方式创建线程比较好(比如:继承thread类还是调用Runnable接口),然后逐渐问到并发问题像在Java并发编程的...
  • 现在项目中有这样一个需求,政府需要对辖区内的...需要中断这个线程,我在开线程的时候已经有了线程Id,看网上说ThreadGroup是可以的,但是已经被废弃了,不推荐使用,不知道有没有其他办法中断某个具体的线程的,求教
  • Java线程(三)- 线程的唯一标识是什么? 数据库里头,我们建表的时候通常唯一标识叫什么名字?没错,叫ID,Thread对象也有ID,可以通过getId来获取。这个ID是自增长的,我们可以查看Thread源代码,下面是我截取...
  • 区分每个请求用户,更好的跟踪分析解决问题(用户登录之后加上userId更佳)
  • 进程和线程的区别(超详细)

    万次阅读 多人点赞 2019-10-03 21:57:46
    进程和线程 进程 一个在内存中运行的应用程序。每个进程都有自己独立的一块内存空间,一个进程可以有多个线程,比如在Windows系统中,一个运行的xx.exe就是一个进程。 线程 进程中的一个执行任务(控制单元),负责...
  • java根据线程的id获取线程

    万次阅读 2014-12-23 19:16:03
    import java.lang.management.ManagementFactory; import java.lang.management.ThreadInfo; import java.lang.management.ThreadMXBean; public class ThreadTest { public static void main(String[] args)
  • Java面试题大全(2020版)

    万次阅读 多人点赞 2019-11-26 11:59:06
    发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,...JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境运行环境。 JRE:Java Runtime Environ...
  • JAVA线程并发

    千次阅读 多人点赞 2019-09-18 12:14:29
    JAVA线程并发1 JAVA并发知识库2 JAVA 线程实现/创建方式2.1 继承 Thread 类2.2 实现 Runnable 接口2.3 Callable 、Future 、ExecutorService 有返回值线程2.4 基于线程池的方式2.4.1 4种线程池2.4.1.1 ...
  • //获取当前进程ID String processName = java.lang.management.ManagementFactory. getRuntimeMXBean ().getName(); System. out .println( "当前进程ID:" +Long. parseLong (processName.split( "@" )[ 0 ]));
  • Java线程和操作系统线程的关系

    千次阅读 2020-06-30 13:55:51
    多支持多线程的程序(进程)可以取得真正的并行(parallelism),且由于共享进程的代码全局数据,故线程间的通信是方便的。它的缺点也是由于线程共享进程的地址空间,因此可能会导致竞争,因此对某一块有多
  • Java 并发:获取线程的返回值

    千次阅读 2013-11-20 20:43:38
    上一篇中Runable是独立线程,它不会存在线程返回值的问题,... 为获取线程返回值,对应的线程类需要实现 Callable 接口。下面是一个示例 public class TaskWithResult implements Callable { protected int countDo
  • java线程-学习总结(完整版)

    千次阅读 多人点赞 2020-12-04 00:02:16
    java多线程 线程和进程 线程的生命周期 新建New 就绪&运行 Runable&Running 阻塞Blocked 等待 waiting 计时等待Time waiting 销毁Terminated 线程池概念和多线程使用场景 线程池的参数解析 线程池阻塞队列...
  • Java线程面试问题

    千次阅读 2019-09-01 22:02:39
    线程和并发问题是 Java 技术面试中面试官比较喜欢问的问题之一。在这里,从面试的角度列出了大部分重要的问题,但是你仍然应该牢固的掌握Java多线程基础知识来对应日后碰到的问题。(校对注:非常赞同这个观点。转...
  • java线程状态以及线程栈分析

    千次阅读 2017-03-09 18:48:10
    java线程状态 状态 说明 NEW 初始状态线程刚刚被创建,并且start()方法还未被调用 RUNNABLE 运行状态。表示线程正在java虚拟机中执行,但是可能正在等待操作系统的其他...
  • 一、线程5种状态 新建状态(New) 新创建了一个线程对象...运行状态(Running) 就绪状态线程获取了CPU,执行程序代码。 阻塞状态(Blocked) 阻塞状态线程因为某种原因放弃CPU使用权,暂时停止运行。直到线...
  • 工程里有获取唯一时间戳作为id的需求,想了想用乐观锁cas实现,自旋. cas原子性操作获得了绝对唯一的时间戳(系统时间:纳秒版本).单机有效,不能分布式调用. public class AtomicTimeStamp { private AtomicLong ...
  • 万字图解Java线程

    万次阅读 多人点赞 2020-09-06 14:45:07
    java线程我个人觉得是javaSe中最难的一部分,我以前也是感觉学会了,但是真正有多线程的需求却不知道怎么下手,实际上还是对多线程这块知识了解不深刻,不知道多线程api的应用场景,不知道多线程的运行流程等等,...
  • 说说线程的生命周期及五种基本状态Java 中用到的线程调度算法是什么?线程同步以及线程调度相关的方法。sleep() wait() 有什么区别?线程的 sleep()方法 yield()方法有什么区别?同步方法同步块,哪个是更...
  • Java线程总结笔记

    千次阅读 2018-09-19 10:21:56
    Java线程总结笔记 实现多线程的方法 查看Thread类的源码,可以发现它实现了Runnable接口,然后在自己的run方法中调用了Runnable的run方法。这里其实就是静态代理这一设计模式,Thread是代理角色,而Runnable则是...
  • Java线程Dump分析

    千次阅读 2019-10-29 08:48:43
    每一个Java虚拟机都有及时生成所有线程在某一点状态的thread-dump的能力,虽然各个 Java虚拟机打印的thread dump略有不同,但是 大多都提供了当前活动线程的快照,及JVM中所有Java线程的堆栈跟踪信息,堆栈信息一般...
  • Java线程面试题,我丝毫不慌

    万次阅读 多人点赞 2020-07-28 09:18:51
    } } 结果还是跟上面是一样的,这里我就不贴图了~~~ 1.6Java实现多线程需要注意的细节 不要将run()start()搞混了~ run()start()方法区别: run():仅仅是封装被线程执行的代码,直接调用是普通方法 start():首先...
  • Java线程实现接口调用

    千次阅读 2019-11-23 19:37:24
    前言 有一张客户信息表,数据量很大。需要把这些记录调用某个接口(这个接口一次只能查询10个客户...id cust_id status remark input_time update_tiem 1 20191111000001 2019-11-23 10:45:04 2019-11-23 10...
  • java线程变量那点事儿

    万次阅读 2018-10-26 16:36:54
    ThreadLocal解决的场景存在的缺陷 InheritableThreadLocal解决的问题缺陷 TransmittableThreadLocal的作用
  • 获取java中jvm启动的线程信息

    千次阅读 2017-06-06 22:16:45
    获取JVM中执行的线程信息import java.lang.management.ManagementFactory; import java.lang.management.ThreadInfo; import java.lang.management.ThreadMXBean;public class MultiThread { public static void ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 236,060
精华内容 94,424
关键字:

java获取线程id和线程状态

java 订阅