0 0

腾讯面试提的问题5

问题:一个程序在运行的时候,如何知道它是否发生死锁,如果发生死锁,如何找到发生死锁的位置?

 

这个就不是很懂,当时就按照自己的想法说了一个答案:在编程的时候,在有可能发生死锁的代码段写一个try..catch,如果这段代码运行超时,就抛出异常,这样既可以判断死锁,也可以找到死锁发生的位置。

 

 

 

2012年10月10日 16:40

3个答案 按时间排序 按投票排序

0 0

jstack dump 线程,然后分析线程
死锁 类似下面这样:

"Thread-1": 
waiting to lock monitor 0x0003f334 (object 0x22c19f18, a java.lang.Object), 
which is held by "Thread-0" 
"Thread-0": 
waiting to lock monitor 0x0003f314 (object 0x22c19f20, a java.lang.Object), 
which is held by "Thread-1"

2012年10月10日 22:28
0 0

用jdk自带的工具 在%JAVA_HOME%\bin下的virtualVM 或是 vmConsole 都可以
点击线程进去 然后就能查看是否有死锁了

2012年10月10日 16:55
0 0

死锁的表现一般是线程BLOCKED 
查看线程的StackTrace  就能大小锁的问题

thread.jsp 打印线程信息的页面

<%@ page contentType="text/html; encoding=gb2312"%><%@ page import="java.lang.management.*"%><%
ThreadMXBean tm = ManagementFactory.getThreadMXBean();
tm.setThreadContentionMonitoringEnabled(true);
%>
<b>Thread Count: </b><%=tm.getThreadCount()%><br>
<b>Started Thread Count: </b><%=tm.getTotalStartedThreadCount()%><br>
<b>thread contention monitoring is enabled? </b><%=tm.isThreadContentionMonitoringEnabled()%><br>
<b>if the Java virtual machine supports thread contention monitoring? </b><%=tm.isThreadContentionMonitoringSupported()%><br>
<b>thread CPU time measurement is enabled? </b><%=tm.isThreadCpuTimeEnabled()%><br>
<b>if the Java virtual machine implementation supports CPU time measurement for any thread? </b><%=tm.isThreadCpuTimeSupported()%><br>
<hr>
<%
long [] tid = tm.getAllThreadIds();
ThreadInfo [] tia = tm.getThreadInfo(tid, Integer.MAX_VALUE);

long [][] threadArray = new long[tia.length][2];

for (int i = 0; i < tia.length; i++) {          
    long threadId = tia[i].getThreadId();

    long cpuTime = tm.getThreadCpuTime(tia[i].getThreadId())/(1000*1000*1000);
    threadArray[i][0] = threadId;
    threadArray[i][1] = cpuTime;
}

long [] temp = new long[2];
for (int j = 0; j < threadArray.length - 1; j ++){
	for (int k = j + 1; k < threadArray.length; k++ )
    if (threadArray[j][1] < threadArray[k][1]){
        temp = threadArray[j];
        threadArray[j] = threadArray[k];
        threadArray[k] = temp;  
    }
}

for (int t = 0; t < threadArray.length; t ++)
{
  ThreadInfo ti = tm.getThreadInfo(threadArray[t][0],Integer.MAX_VALUE);
  if (ti == null) continue;
%>
<b>Thread ID: </b><%=threadArray[t][0]%><br>
<b>Thread Name: </b><%=ti.getThreadName()%><br>
<b>Thread State: </b><%=ti.getThreadState()%><br>
<b>Thread Lock Name: </b><%=ti.getLockName()%><br>
<b>Thread Lock Owner Name: </b><%=ti.getLockOwnerName()%><br>
<b>Thread CPU Time: </b><%=threadArray[t][1]%> sec<br>
<b>Stack Info: (depth:<%=ti.getStackTrace().length%>)</b><br>
<%
StackTraceElement[] stes = ti.getStackTrace();
for(int j=0; j<stes.length; j++)
{
  StackTraceElement ste = stes[j];
%>
&nbsp;&nbsp;&nbsp;&nbsp;+<%=ste%><br>
<%
}
%>
<hr>
<%
}
%>

2012年10月10日 16:53

相关推荐

    腾讯面试题解析.pdf

    腾讯面试题解析.pdf 本资源是一份详细的腾讯面试题解析文档,涵盖了 Android 面试题、网络基础、常用三方库、算法基础等多个方面的知识点。下面是对该文档的详细解析: 计算机基础面试题 在计算机基础面试题部分...

    腾讯面试题 + 笔试题(全)

    《腾讯面试题与笔试题详解》 在求职的道路上,面试和笔试是必不可少的环节,尤其是对于技术人才来说,能够顺利通过大公司的面试更是彰显个人实力的重要标志。本压缩包包含两份珍贵的资料——“腾讯笔试题专辑(含...

    腾讯PHP面试题_腾讯php面试题_

    最新腾讯PHP面试题1. php 的垃圾回收机制 PHP 可以自动进行内存管理,清除不需要的对象。 PHP 使用了引用计数 (reference counting) GC 机制。 每个对象都内含一个引用计数器 refcount,每个 reference 连接到对象,...

    阿里面试题 腾讯面试题 百度面试题 华为面试题 京东面试题 头条面试题 经典面试题 程序员 IT经理 项目经理 面试题

    阿里面试20题 百度面试10题 华为面试10题 京东面试13题 腾讯面试37题 头条面试10题 项目经理面试常遇问题 经典面试题 程序员 IT经理 项目经理 面试题 研发经理 高级程序员 经典面试题

    互联网校招题库资料笔试面试真题具体面试问题回答技巧腾讯阿里培训资料.zip

    互联网校招题库资料笔试面试真题具体面试问题回答技巧腾讯阿里培训资料: C++面试题笔试题 C语言 IQ智力面试题笔试题 JAVA笔试面试资料 NET面试题笔试题 web开发 数据库面试题笔试题 算法 数据结构 计算机基础 计算机...

    腾讯历年面试试题汇总

    这些问题反映了腾讯面试中对C/C++基础知识的重视,以及对逻辑思维、算法理解和实际问题解决能力的测试。对于准备腾讯面试的求职者来说,熟练掌握这些知识点至关重要。同时,面试也可能包含其他领域的问题,如网络、...

    前端面试题(包括百度阿里腾讯面试题).txt

    网盘下载pdf文件,包括常见前端面试题汇总,百度、阿里、腾讯校招面试题汇总,网盘下载pdf文件,65个文件

    10道腾讯的Java面试题

    10道腾讯的Java面试题10道腾讯的Java面试题10道腾讯的Java面试题10道腾讯的Java面试题10道腾讯的Java面试题10道腾讯的Java面试题

    腾讯前端面试题

    在腾讯的前端面试中,面试官可能会关注一系列关键知识点,这些知识点涵盖了前端开发的基础到进阶内容。以下是对这些知识点的详细解释: 1. **JSONP原理**:JSONP(JSON with Padding)是一种解决跨域数据获取的问题...

    华为 腾讯 测试面试题 面试技巧

    在IT行业的求职过程中,华为和腾讯...总的来说,华为和腾讯的测试面试题涵盖的范围广泛,既要求扎实的专业技能,又看重解决问题和适应企业环境的能力。通过全面的准备和持续的学习,相信你能成功应对这样的面试挑战。

    2024最新C语言面试题大汇总附答案-华为阿里腾讯面试题.pdf

    2024最新C语言面试题大汇总[附答案]-华为阿里腾讯面试题.pdf

    腾讯Java面试题

    【腾讯Java面试题】 在Java领域,面试是评估求职者技术实力的重要环节,而腾讯作为中国互联网巨头之一,其Java面试题往往具有很高的参考价值。这些题目不仅涵盖基础语法、数据结构、算法、多线程、JVM优化等多个...

    腾讯笔试面试题

    腾讯近年来笔试面试题合集 包括校园招聘与实习生招聘 主要是技术类

    腾讯系统工程师面试题

    腾讯系统工程师面试题 腾讯系统工程师面试题 腾讯系统工程师面试题

    腾讯面试题笔试题

    ### 腾讯面试题笔试题解析 #### 领域背景 在IT行业中,面试题目不仅是对求职者技能的一种考验,也是企业筛选合适人才的重要工具。本篇将基于提供的标题、描述、部分问题及其答案,深入分析这些知识点,帮助读者更...

    2022年最新(腾讯)前端面试题真题解析

    本资源“2022年最新(腾讯)前端面试题真题解析”汇聚了最新的腾讯前端面试题,旨在帮助求职者更好地准备面试,提升成功入职的可能性。 面试题的解析通常会涵盖以下几个关键领域: 1. **基础概念**:面试题会涉及...

    腾讯笔试面试题汇总

    在IT行业中,尤其是在招聘领域,腾讯作为中国最大的互联网公司之一,其笔试和面试题往往备受关注。这些题目不仅反映了腾讯对技术人才的期待,也揭示了行业内的热门技术和招聘趋势。下面,我们将深入探讨腾讯笔试面试...

    腾讯面试题及面试经历(技术工程师类)

    从给定的文件信息中,我们可以提炼出与腾讯技术工程师面试相关的多个关键知识点,这些知识点不仅涵盖了面试的具体题目,还涉及了应聘者在准备过程中的策略、态度以及面试官可能关注的能力点。以下是对这些知识点的...

    华为,腾讯面试题c++

    华为和腾讯最近的面试题,有答案和解析。看看考什么。 c/c++

Global site tag (gtag.js) - Google Analytics