死锁检测

public class threaddemo{    private static object lock1 = new object();    private static object lock2 = new object();    /**     * for test deadlock     *     * @param agrs     */    public static void main(string[] agrs)    {        new thread(new fightschedule1()).start();        executors.newscheduledthreadpool(1).scheduleatfixedrate(new fightschedule(), 0, 10, timeunit.seconds);        new thread(new fightschedule2()).start();    }    static class fightschedule2 implements runnable    {        public void run()        {            try            {                synchronized (lock2)                {                    thread.sleep(1000);                    synchronized (lock1)                    {                        thread.sleep(1000);                    }                }            }            catch (exception e)            {                e.printstacktrace();            }        }    }    static class fightschedule1 implements runnable    {        public void run()        {            try            {                synchronized (lock1)                {                    thread.sleep(1000);                    synchronized (lock2)                    {                        thread.sleep(1000);                    }                }            }            catch (exception e)            {                e.printstacktrace();            }        }    }    static class fightschedule implements runnable    {        public void run()        {            stringbuilder sb = new stringbuilder();            try            {                threadgroup group;                for (group = thread.currentthread().getthreadgroup(); group.getparent() != null; group =                    group.getparent())                    ;                sb.append("totalthread:" + group.activecount()).append('\n');                thread[] threads = new thread[group.activecount()];                group.enumerate(threads);                map<long, thread> threadmap = new hashmap<long, thread>();                for (thread thread : threads)                {                    if (thread != null)                    {                        threadmap.put(thread.getid(), thread);                    }                }                threadmxbean mxb = managementfactory.getthreadmxbean();                // 此方法设计用于故障排除,不用于异常控制。它是一个开销很大的操作。}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值