java多线程关闭问题?

问题描述

Java多线程如何在程序安全的情况下关闭?

解决方案

解决方案二:
程序安全?什么意思?
解决方案三:
设置一个公共的关闭信号各个线程收到关闭信号后,自行运行完毕,自行关闭应该是最安全的。
解决方案四:
各线程自己stop()
解决方案五:
比如要读取10个文件,在读取的4个半的地方关闭线程,不影响已读过的内容.
解决方案六:
是说线程异常终止?那就是你自己线程内部代码的问题了,只读取文件,对原始文件不会有影响如果想断点续读,就要在线程的内部代码中有一定的校验,纠错的机制了
解决方案七:
我是读取一个文件的内容到另一个日志文件里面的,现在总是在stop以后日志文件里面保存的内容不完全.
解决方案八:
把你的代码贴出来吧,具体问题具体分析估计是你线程内部收尾工作没做好
解决方案九:
调用interrupt()方法啊
解决方案十:
设置一个标志,while(flag){}
解决方案十一:
想安全停止不推荐调用stop()和interrupt()使用楼上的while(flag){.....if(条件)flag=false;}这样的方法结束线程就好了
解决方案十二:
Thread.stop、Thread.suspend和Thread.resume等方法即为不安全推出线程的方法,一般是不推荐使用的。可以用定义Boolean参数的方法,然后控制循环的办法:importjava.util.*;publicclassTestInterrupt{publicstaticvoidmain(String[]args){MyThreadthread=newMyThread();thread.start();try{Thread.sleep(10000);}catch(InterruptedExceptione){}thread.flag=false;}}classMyThreadextendsThread{booleanflag=true;publicvoidrun(){while(flag){System.out.println("==="+newDate()+"===");try{sleep(1000);}catch(InterruptedExceptione){return;}}}}其实还可以更加完善,即:专门定义一个flag的参数类,然后用tread.className调用之,更加完善

时间: 2024-10-28 12:44:46

java多线程关闭问题?的相关文章

java 多线程,这种情况是否正常。线程总数一直在上升,但是内存没有出现过大的波动

问题描述 java 多线程,这种情况是否正常.线程总数一直在上升,但是内存没有出现过大的波动 因根据不同的任务需要定时创建线程池,为什么线程总数一直在上升? 解决方案 线程数一直上升,建议开通jmx,利用远程的工具查看,例如jdk自带的jvisualvm.出现这种情况原因比较多,例如:1)线程之间资源竞争,导致前面线程池没有释放资源,后面线程阻塞2)线程出现死循环3)优先级线程一直占据竞争资源4)某些方法同步锁或者某些变量同步锁 建议用jvisualvm查看应该关闭的线程堵塞的方法的行数. 解决

Java多线程和并发基础面试问答,看过后你不会后悔

第一:Java多线程面试问题 1:进程和线程之间有什么不同? 一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用.而线程是在进程中执行的一个任务.Java运行环境是一个包含了不同的类和程序的单一进程.线程可以被称为轻量级进程.线程需要较少的资源来创建和驻留在进程中,并且可以共享进程中的资源. 2:多线程编程的好处是什么? 在多线程程序中,多个线程被并发的执行以提高程序的效率,CPU不会因为某个线程需要等待资源而进入空闲状态.多个线程共享堆内存(heap

Java多线程知识小抄集(一)

本文主要整理博主遇到的Java多线程的相关知识点,适合速记,故命名为"小抄集".本文没有特别重点,每一项针对一个多线程知识做一个概要性总结,也有一些会带一点例子,习题方便理解和记忆. 1. interrupted与isInterrupted的区别 interrupted():测试当前线程是否已经是中断状态,执行后具有状态标志清除为false的功能. isInterrupted():测试线程Thread对象是否已经是中断状态,但不清除状态标志. 方法: public static boo

Java多线程与并发库高级应用

想快速精通多线程?看这里  http://blog.chinaunix.net/uid-540802-id-4431193.html 什么是线程         线程,是程序执行流的最小单元.是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可以与同属一个进程的其他线程共享进程所拥有的全部资源,一个线程可以创建和撤销另一个线程,同一进程中的多个线程之间可以并发执行.在单个程序中同时运行多个线程完成不同的工作,称为多线程.当自己想

JAVA多线程和并发基础面试问答

原文链接  译文连接 作者:Pankaj  译者:郑旭东  校对:方腾飞 多线程和并发问题是Java技术面试中面试官比较喜欢问的问题之一.在这里,从面试的角度列出了大部分重要的问题,但是你仍然应该牢固的掌握Java多线程基础知识来对应日后碰到的问题.(校对注:非常赞同这个观点) Java多线程面试问题 1. 进程和线程之间有什么不同? 一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用.而线程是在进程中执行的一个任务.Java运行环境是一个包含了不同的

Java多线程知识小抄集(三)

本文主要整理博主遇到的Java多线程的相关知识点,适合速记,故命名为"小抄集".本文没有特别重点,每一项针对一个多线程知识做一个概要性总结,也有一些会带一点例子,习题方便理解和记忆. 51. SimpleDateFormat非线程安全 当多个线程共享一个SimpleDateFormat实例的时候,就会出现难以预料的异常. 主要原因是parse()方法使用calendar来生成返回的Date实例,而每次parse之前,都会把calendar里的相关属性清除掉.问题是这个calendar是

Java多线程知识小抄集(四)——完结

本文主要整理博主遇到的Java多线程的相关知识点,适合速记,故命名为"小抄集".本文没有特别重点,每一项针对一个多线程知识做一个概要性总结,也有一些会带一点例子,习题方便理解和记忆. 更多内容可以查阅: Java多线程知识小抄集(一) Java多线程知识小抄集(二) Java多线程知识小抄集(三) 68. 如何避免死锁 死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,他们都将无法推进下去.这是一个严重的问题,因为死锁会让你的程序挂起无法完成

《JAVA多线程编程实战指南》之Two-phase Termination(两阶段终止)模式

本文是<JAVA多线程编程实战指南>的样章,感谢作者授权并发网(ifeve.com)发表此文.感谢demochen整理此文. 5.1Two-phase Termination模式简介 停止线程是一个目标简单而实现却不那么简单的任务.首先,Java没有提供直接的API用于停止线程.此外,停止线程还有一些额外的细节需要考虑,如停止的线程处于阻塞(如等待锁)或者等待状态(等待其他线程),尚有未处理完的任务等. Two-phase Termination模式通过将停止线程这个动作分解为准备阶段和执行阶

Java多线程知识小抄集(二)

本文主要整理博主遇到的Java多线程的相关知识点,适合速记,故命名为"小抄集".本文没有特别重点,每一项针对一个多线程知识做一个概要性总结,也有一些会带一点例子,习题方便理解和记忆. 27. ConcurrentHashMap ConcurrentHashMap是线程安全的HashMap,内部采用分段锁来实现,默认初始容量为16,装载因子为0.75f,分段16,每个段的HashEntry<K,V>[]大小为2.键值都不能为null.每次扩容为原来容量的2倍,Concurre