问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java如何检查执行的线程已卡死

发布网友 发布时间:2022-04-30 15:55

我来回答

2个回答

热心网友 时间:2022-06-26 21:00

swt执行线程
SWT中的多线程机制和awt/swing中有些不同,这个大家应该都知道,不过还是要说下,Display对象中负责调用其他线程的方法有以下3种:● asyncExec(Runnable runnable):异步启动新的线程。所谓异步就是,UI线程不会等待runnable对象执行结束后再继续进行,就是说UI线程可以和runnable对象所在的线程同时运行。● syncExec(Runnable runnable):同步启动新的线程。所谓同步就是,UI线程会等待runnable对象执行结束后才会继续进行,当runnable对象是耗时大的线程时,尽量不要采用此种方式。另外,对于该种方式创建的线程可通过getSyncThread()方法获得线程对象。● timerExec(int milliseconds,Runnable runnable):指定一段时间再启动新的线程。用此方法创建的线程,将会在指定的时间后再启动线程。当然用此方法创建的线程启动后,与UI线程是异步的。如果指定的时间为负数,将不会按时启动线程。另外Display对象中,与UI线程相关的方法如下所示:● 获得当前的UI线程对象的方法:getThread(),返回Thread对象。● 使UI线程处于休眠状态:sleep()。● 唤醒UI线程:wake()。上面几点都是书里面的原话,不做阐述了.下面我要说的是一个写法的问题,不能小瞧啊,后果很严重.如果有一个线程他要做的事需要很久比如5分钟,像我这样的初学swt的人一定是new了一个线程然后getDisplay().asyncExec(线程对象); 结果虽然执行成功,但是界面确处于挂起状态(假死),直到执行结束,不过要说的是的确是异步执行的,还是ui却不知道为什么停止用户响应,原理暂时先不去理了,swt源码太复杂了.这里面就要引出一个问题为什么不 像下面这么写呢?Thread thread = new Thread(线程对象);
thread.start();
因为swt中非UI线程中调用窗口控件如果不像上面三种写法那样写的话,会抛org.eclipse.swt.SWTException: Invalid thread access这个异常在swt中程序启动时只有一个主线程,在这里与awt和swing是不一样的,它不允许其他线程访问UI主线程中的部件,具读过swt源码的人说AsyncExec方法根本就没有新启动一个线程而是由Synchronizer调用其中的 run 方法而已.如果是这样的话,也就难怪UI会挂起.解决这个问题的一个比较好的方法是如果要异步执行的线程所做的工作非常少的话,就无所谓了,如果异步线程需要执行很长时间的话,应该像下面这样启动线程Thread thread = new Thread(线程对象);
thread.start();在线程对象里面所有调用到UI部件的地方classFinder.getGui().getDisplay().syncExec(new Runnable() {
public void run() {
//do run
}
});历经几个小时问题终于解决了这里做个总结吧.我对swt多线程的评价swt的syncExec ,asyncExec 以及timerExec都是伪线程执行方法,把它看成特别的Synchronizer调用就可以了,syncExec ,asyncExec 以及timerExec执行的线程要做的事只是改变UI部件的属性而已执行时间不能太长.此外的其他操作仍然由传统的线程来做.这里要特别注意,swt执行线程只用于在传统线程中操作ui组建在这里要感谢内部类,否则一个复杂的swt线程不知道要写多少个为swt部件服务的标准类

热心网友 时间:2022-06-26 21:00

查询线程的状态,根据状态码判断。。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
巴西龟最长活多久,家养!!! 养胃的药最好的是什么啊 婴儿积食发烧不愿吃药怎么办 板门穴位在哪个部位 手机设置放偷看的方法? 凝结水回收器生产厂家? 个人账户养老金预测公式:现有5万元,缴费20年,能领多少钱? 临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? java 多线程按键假死怎么处理 PMBOK最新版是哪版,PMP考试官方用的,谢谢 对于PMP考试教材PMBOK读到什么程度才算OK? PMP教材是英文的吗 隐形眼镜破裂之后,还能用吗 隐形眼镜破了怎么办、还能继续戴着吗 加热温控装置原理图 隐形眼镜破了还能不能换? 蔬菜大棚温度控制系统需要哪些装置 求一水温控制及加热装置 隐形眼镜边缘破损有什么好办法么? 隐形眼镜破了一个角还能戴么? 隐形眼镜边破了一点点,还能戴吗 隐形眼镜中间裂了有什么补救方法 隐形眼镜破了个小洞还能用吗。如果不能是为什么。能回答的详细点吗? 隐形眼镜破损怎么修复啊? 2019凯迪拉克XT5双区自动温度控制系统是什么? 温度控制开关是怎么控制温度的,都必须安装感温探头吗?也就是它靠什么感知温度的? 冷却系的温度调节装置? 实验加热温度超过200度,温度要能精确控制,还要搅拌,用什么装置比较好 java中出现僵死进程的问题。 java Swing 应用程序,出现假死,求教 java 长时间运行,程序失去反应 JAVA中Thread.sleep界面假死 java socket服务器端线程卡死 java 线程和Exception问题 Java运行一段时间就会卡死怎么回事 跪求他(她)深深的打动了我作文 java Thread.sleep卡死问题 ​合租房里的任性打工妹:每换一份新工作就重新找一位男朋友,这是为什么? 在java中,多线程真的是多个线程同时运行吗?? 2008年中国骄傲的十大人物 java多线程中t2.notify()唤醒的是线程t2还是等待列队中的其他线程? 妈妈有一块长方形的花布,长32厘米,宽15厘米,她想给芳芳做成正方形的手绢,而且手绢要最大? java 事件是否是用线程用处理的 演员黄晓娟多大年龄 弱弱的问个问题,一般的机器可以开多少个java线程 帮我起个小娟的英文名吧 java 如何判断一个程序是否卡死,然后再处理 姓名:舒小娟,女,今年本命年,谁能用姓名为题材拟幅大气、抒情的对联,加横批