精华内容
下载资源
问答
  • java 监控线程

    2014-06-27 16:34:49
    java 监控 线程
  • 下面小编就为大家带来一篇Java实现监控多个线程状态的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 主要介绍了Java线程之守护线程(Daemon)用法,较为详细的分析了守护线程的功能与实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • Java线程超时监控

    2014-07-18 09:01:18
    讲解有关Java中多线程运行时针对单个线程的执行超时监控机制,用于处理单个线程执行控制
  • Java线程线程监控

    千次阅读 2016-07-22 12:09:14
    在这里我们使用一个监控线程的概念。我们可以定义一个线程继承自Thread类,在其中定义一个Map集合,用于存放我们需要管理的线程;当我们需要对某个线程进行操作时,我们就可以根据他的key值获取到;

    在程序开发中我们经常会使用到很多线程去做不同的业务,我们怎么能方便的管理这些线程呢?是否我们希望我们创建的线程能够一直运行下去,知道程序退出?在这里我们使用一个监控线程的概念。

    我们可以定义一个线程继承自Thread类,在其中定义一个Map集合,用于存放我们需要管理的线程;当我们需要对某个线程进行操作时,我们就可以根据他的key值获取到;
    
    private HashMap<String, Thread> threads2Watch = new HashMap<String, Thread>();
    

    在run方法中,我们写一个循环,让此线程一直运行下去,并利用sleep方法,让其停顿一段时间;

    while (true) {
                try {
                    sleep(1 * 60 * 1000);
                } catch (InterruptedException e) {
                    DebugLog.logger.error("Exception!!", e);
                    continue;
                }
            }

    注意这里的catch中加入了一个continue;即使此次sleep发生了异常,while循环仍然可以运行下去;不会对整个线程造成影响;

    在while()循环中,我们就可以写自己管理线程的业务方法了,比如遍历整个map集合,获取当前线程的转态,如果线程已经结束,我们就从新开启一个这样的线程,并把它加入map集合中;

    通过以上的这种做法,我们可以让我们自己程序中想要一直运行的线程一直运行下去,这种线程尤其适合在频繁监听某一网络端口,网络状态,某些值的变化是很重要的;

    通过这种思想,我们可以根据自己需要扩展自己的功能;

    展开全文
  • 主要介绍了java 使用线程监控文件目录变化的实现方法的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
  • MinerMonitorThread.java 监控线程

    万次阅读 2019-09-20 15:59:27
    MinerMonitorThread.java 监控线程 package com.iteye.injavawetrust.miner; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * 监控线程 * @author ...

    MinerMonitorThread.java 监控线程

    package com.iteye.injavawetrust.miner;
    
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    
    /**
     * 监控线程
     * @author Administrator
     *
     */
    public class MinerMonitorThread extends Thread {
    	
    	private static final Log LOG = LogFactory.getLog(MinerMonitorThread.class);
    	
    	public static volatile boolean done = false;
    
    	@Override
    	public void run() {
    		while(!done){
    			synchronized (this) {
    				try {
    					Thread.sleep(5000);
    				} catch (InterruptedException e) {
    					e.printStackTrace();
    				}
    				if (MinerQueue.unVisitedIsEmpty()
    						&& MinerQueue.waitingMiseringIsEmpty()
    						&& MinerQueue.storeIsEmpty()) {
    					done = true;
    					MinerThreadPool.shutdown();
    					LOG.info("MinerMonitorThread程序结束。。。。。。当前线程[" + Thread.currentThread().getName() + "]");
    					long endTime = System.currentTimeMillis();
    					LOG.info("MinerMonitorThread已经访问队列URL大小[" + MinerQueue.getUrlSetSize() + "]当前线程[" + Thread.currentThread().getName() + "]");
    					LOG.info("用时[" + MinerUtil.msToss(endTime - MinerUtil.starTime) + "]当前线程[" + Thread.currentThread().getName() + "]");
    				}
    			}
    		}
    	}
    
    }
    

     

    返回列表

     

    展开全文
  • Java线程及Jvm监控工具

    千次阅读 2016-05-21 19:25:00
    Java线程状态 线程的五种状态 * 新建:new(时间很短) * 运行:runnable * 等待:waitting(无限期等待),timed waitting(限期等待) * 阻塞:blocked * 结束:terminated(时间很短) Jvm监控工具 一、...

    Java线程状态

    线程的五种状态

    * 新建:new(时间很短)

    * 运行:runnable

    * 等待:waitting(无限期等待),timed waitting(限期等待)

    * 阻塞:blocked

    * 结束:terminated(时间很短)

    Jvm监控工具

    一、jstack

    介绍:

    jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息。
    如果是在64位机器上,需要指定选项"-J-d64",Windows的jstack使用方式只支持以下的这种方式:jstack [-l] pid
    如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。
    另外,jstack工具还可以附属到正在运行的java程序中,看到当时运行的java程序的java stack

    展开全文
  • Java 监控线程池所有任务是否执行完毕 场景引入 在最近的工作中遇到一个需要批量生产百万数据并写入数据库的需求,先通过单线程的方式去实现,但是感觉效率一般,然后通过多线程的方式去改进,但是遇到下面的问题:...

    Java 监控线程池所有任务是否执行完毕

    场景引入

    在最近的工作中遇到一个需要批量生产百万数据并写入数据库的需求,先通过单线程的方式去实现,但是感觉效率一般,然后通过多线程的方式去改进,但是遇到下面的问题:

    生成数据的时候,每生成一条数据,就将数据丢入到集合中进行缓存,当集合中的数据量达到 500 的时候,就进行一次数据库写入操作,并清空集合。

    那么当我生成的数据量为 1200 的时候,就会出现最后 200 条没有写入到数据库的问题

    那么要解决这个问题,就要知道线程池的任务什么时候执行完毕,网上找了很多方法如:

    • 方案一 - 直接调用是否终止的方法
    executor.isTerminated()
    
    • 方案二 - 判断活跃线程数
    executor.getActiveCount() == 0
    
    • 方案三 - 设置一个较长的等待时间
    executor.awaitTermination(10000, TimeUnit.SECONDS);
    

    但是都没有达到我的目的(也有可能是我使用的姿势不对)

    最后尝试了下面的方法

    功能实现

    import lombok.extern.slf4j.Slf4j;
    import org.apache.commons.collections.CollectionUtils;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Random;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.ThreadPoolExecutor;
    
    @Slf4j
    public class ThreadPoolTest {
    
        static List<Integer> TEMP_LIST = new ArrayList<>(10);
    
        public static void main(String[] args) {
            ExecutorService executorService = Executors.newFixedThreadPool(3);
            Random random = new Random();
            int count = random.nextInt(100);
            for (int i = 0; i < count; i++) {
                int finalI = i;
                executorService.execute(() -> {
                    addToTemp(finalI * 2, false);
                    try {
                        Thread.sleep(random.nextInt(1000 * 2));
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                });
            }
    
            // 监控线程执行情况
            monitor((ThreadPoolExecutor) executorService);
            // 最后一次数据插入
            addToTemp(null, true);
            System.out.println("结束");
        }
        
        /**
         * 添加数据到缓存
         *
         * @Author: Neo
         * @Date: 2019/12/19 21:46
         * @Version: 1.0
         */
        public static synchronized void addToTemp(Integer data, boolean focus) {
            if (null != data) {
                TEMP_LIST.add(data);
            }
    
            if (CollectionUtils.isNotEmpty(TEMP_LIST) && (CollectionUtils.size(TEMP_LIST) >= 10 || focus)) {
                // 模拟数据库写入
                log.info("执行一次插入,数据量:{}", CollectionUtils.size(TEMP_LIST));
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                TEMP_LIST.clear();
            }
        }
        
        /**
         * 监控线程执行情况
         * 一直阻塞到线程任务执行完毕
         *
         * @Author: Neo
         * @Date: 2019/12/19 21:09
         * @Version: 1.0
         */
        public static void monitor(ThreadPoolExecutor executor) {
            
            while (!isTerminated(executor)) {
                try {
                    int queueSize = executor.getQueue().size();
                    int activeCount = executor.getActiveCount();
                    long completedTaskCount = executor.getCompletedTaskCount();
                    long taskCount = executor.getTaskCount();
    
                    log.info("当前排队线程数:{},当前活动线程数:{},执行完成线程数:{},总线程数:{}", queueSize, activeCount, completedTaskCount, taskCount);
    
                    Thread.sleep(1000 * 5);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    
        /**
         * 线程池任务是否执行完毕
         *
         * @Author: Neo
         * @Date: 2019/12/19 21:11
         * @Version: 1.0
         */
        public static boolean isTerminated(ThreadPoolExecutor executor) {
            return executor.getQueue().size() == 0 && executor.getActiveCount() == 0;
        }
    }
    
    展开全文
  • myeclipse写的Java程序,支持IP地址段的多线程扫描,只扫描tcp端口
  • 主要介绍了Java线程池运行状态监控实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 一.Java VisualVM 概述对于使用命令行远程监控jvm太麻烦。在jdk1.6中Oracle提供了一个新的可视化的。JVM监控工具JavaVisualVM。jvisualvm.exe在JDK的bin目录下。双击启动JavaVisualVM后可以看到窗口左侧“应用程序”...
  • Java-实现可监控线程池

    千次阅读 2019-03-28 00:04:13
    目标:创建线程池和一个监控线程监控线程持有线程池引用,接着定时打印线程池相关信息,使用springboot创建demo。 创建线程池接口: /** * 通过设置的参数创建线程池 * Created by wzx on 22/03/2019 */ public...
  • 业务系统有多个线程在运行,为了防止线程挂掉,需要监控线程运行情况,在线程挂掉以后重新启动它。 提示:先排错,再容错,这个方式只是用来兜底的。 监控进程,遍历已经注册的线程,发现挂掉就重新创建并启动: ...
  • Java实现监控多个线程状态的实现

    千次阅读 2016-11-26 17:18:16
    场景:需要启动多线程处理事情,而在所有事情做完之后,需要修改系统状态;那么如何判断所有线程(事情)都做完了呢?这就需要判断所有当前运行的线程状态了。   import java.util.concurrent.CountDownLatch; ...
  • 垃圾回收器与JVM性能监控工具介绍垃圾回收器与JVM性能监控工具介绍ppt。
  • 适用于监控所有Java应用,具有堆内存监控、方法区监控、GC监控、类加载监控、类编译监控线程监控,提供堆快照下载,线程快照下载。 若使用本项目二次开发请遵守Apache开源协议,并在项目主页做上述文字说明且附上...
  • 主要介绍了基于Idea+Jconsole实现线程监控功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 如何监控Java线程池运行状态?

    千次阅读 2020-05-09 11:00:43
    (转)如果想监控一个线程池的执行状态,线程池执行类ThreadPoolExecutor给出了相关的 API, 能实时获取线程池的以下信息: 当前活动线程数 正在排队中的线程数 已经执行完成的线程数 总线程数 …… 总线程数 = ...
  • Java线程:彻底搞懂线程池

    万次阅读 多人点赞 2019-07-09 19:27:00
    熟悉Java线程编程的同学都知道,当我们线程创建过多时,容易引发内存溢出,因此我们就有必要使用线程池的技术了。 目录 1 线程池的优势 2 线程池的使用 3 线程池的工作原理 4 线程池的参数 4.1 任务队列...
  • // 创建一个线程池,线程数corePoolSize为5Executor executor =Executors.newScheduledThreadPool(5);// 把线程Runnable放到线程池运行executor.execute(new Runnalbe(){@Overridepublic void run() {System.out....
  • 1、java 线程实时监控硬盘文件目录的文件操作状态。 package test; import java.io.File; public class FileListener { public static void main(String[] args) { String path = "e:/test"; Thread ...
  • Java线程--线程监控工具之Jconsole

    千次阅读 2017-09-07 14:22:57
    一、JConsole是什么  从Java 5开始 引入了 ...您可以轻松地使用 JConsole(或者,它更高端的 “近亲” VisualVM )来监控 Java 应用程序性能和跟踪 Java 中的代码。 二、如何启动JConsole 如果是从命令行启动,使
  • java ScheduledExecutorService 多线程与定时任务的结合使用 读取文件、写出文件 请使用 字符缓冲流、字节缓冲流 File output = new File("/home/root/logs/output.log"); File readin = new File("...
  • 撇开代码检查工具,我们先讨论一下利用VisualVM监控,分析我们的多线程的运行情况。 AD:51CTO学院:IT精品课程在线看! 在Java线程程序运行时,多数情况下我们不知道到底发生了什么,只有出了错误的日志...
  • // java使用一个线程监控另一个线程 // 这里写的是例子,实际应用是一个线程监控主线程某个属性的值 // 当值发生改变时,做出相应的业务逻辑 public class B extends Thread { static int num = 1; public static ...
  • java是如何知道某一个线程即将死掉的、虚拟机结束改线程、是注册监听器吗?求大神解答
  • java线程-学习总结(完整版)

    千次阅读 多人点赞 2020-12-04 00:02:16
    可能内部JVM监控信息也无法监控,Thread#interrrupted方法进行销毁判断,若不能销毁,则会发生InterruptedException异常 线程池概念和多线程使用场景 线程是执行单元,线程池即一组执行单元组成的集体,也就是线程的...
  • java线程测试实例

    2012-02-08 16:39:56
    在实际项目中 多线程用的比较广泛 本人根据网络资源整理出了一个小小的多线程实例 大家有需要可以下载

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 171,076
精华内容 68,430
关键字:

java怎么监控线程

java 订阅