在Java中如何正确地终止一个线程】的更多相关文章

1.使用Thread.stop()? 极力不推荐此方式,此函数不安全且已废弃,具体可参考Java API文档 2.设置终止标识,例如: import static java.lang.System.out; public class TestThread extends Thread { private boolean terminationFlag; public void run() { for (int i = 0; i != 10000000; ++i) { if (terminatio…
正确的关闭一个线程可不是简单的事情,由于线程调度的复杂性以及不可控性(毕竟运行都由操作系统做主),先来了解一下interrupt() 1.interrupt() 根据jdk文档的介绍,如下: interrupt()的作用是中断本线程. 本线程中断自己是被允许的:其它线程调用本线程的interrupt()方法时,会通过checkAccess()检查权限.这有可能抛出SecurityException异常. 如果本线程是处于阻塞状态:调用线程的wait(), wait(long)或wait(long…
java中使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? 是引用对象的地址值不能变,引用变量所指向的对象的内容是可以改变. final变量永远指向这个对象,是一个常量指针,而不是指向常量的指针. 例如:final StringBuffer sbu = new StringBuffer(“abc”); 在对其进行重新赋值 sbu = new StringBuffer(“”); 会出现编译错误,被final修饰的变量是不能被重新赋值的. sbu.append(“d”); 是…
请说明"static"关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法? "static"关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问. override:子类重写父类的方法(返回值,方法名,参数都相同)以实现多态. private只能够被自身类访问,子类不能访问private修饰的成员,所有不能override一个private方法 static方法是与类绑定的与任何实例都无关…
干净的终止一个线程  我曾经在第2章产生一个后台线程,用以输出一张屏幕外的 bitmap 图.我们必须解决的一个最复杂的问题就是,如果用户企图结束程序,而这张bitmap 图尚未完成,怎么办?第2章的一个鸵鸟做法就是在任何 worker 线程还没完成其工作之前,不准用户结束程序.只要修改主消息循环,使消息循环不得在任何一个 worker 线程尚未结束之前结束,即可办到.这种做法的最大优点就是"简单",但万一 bitmap 图十分复杂,需要很长的工作时间,那么程序有可能看起来像是&quo…
Java基础-Java中的并法库之线程池技术 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是线程池技术 二.…
再写jsp的实验作业的时候,需要用到java中对象流,但是碰到了之前没有遇到过的情况,改bug改到崩溃!!记录下来供大家分享 如果要用对象流去读取一个文件,一定要先判断这个文件的内容是否为空,如果为空的话,就是连对象流的实例对象也不要创建,一创建就会报错. 错误代码实例: public static void main(String[] args){ ObjectInputStream ois = null; File file = new File("F:\\MessageBroad.txt&…
发现在高请求量的时候获取hostName慢,后发现getHostName方法慢导致的:需要获取hostName为获取ip的方式了:java 中 InetSocketAddress // remoteAddress.getHostName() //获取hostName时耗时长,改方法要慎用:(先从本地取,如果本地没取到从远程dns中取) remoteAddress.getAddress().getHostAddress() : //改用这种方式获取ip…
程序:一段静态的代码,一组指令的有序集合,它本身没有任何运行的含义,它只是一个静态的实体,是应用软件执行的蓝本. 进程:是程序的一次动态执行,它对应着从代码加载,执行至执行完毕的一个完整的过程,是一个动态的实体,它有自己的生命 周期.它因创建而产生,因调度而运行,因等待资源或事件而被处于等待状态,因完成任务而被撤消.反映了一个程序在 一定的数据 集上运行的全部动态过程.通过进程控制块(PCB)唯一的标识某个进程.同时进程占据着相应的资源(例如包 括cpu的使用 ,轮转时间以及一些其它设备的权限)…
接着上一篇博客的 一Java线程的等待/通知模型 ,没有看过的建议先看一下.下面我们用等待通知机制来实现一个线程池 线程的任务就以打印一行文本来模拟耗时的任务.主要代码如下: 1  定义一个任务的接口. /* * 任务的接口 */ public interface Task { void doSomething(); } 2  实现一个具体的任务. /* * 具体的任务 */ public class PrintTask implements Task{ //打印一句话,睡一秒,来模拟耗时的任务…