Thread.stop方法可能中断线程,但不安全,此方法都不会用上,快被淘汰了
对线程中的 join, wait, sleep的阻塞进行中断,使用Thread.interrupt()方法退出阻塞, 抛出InterruptedException异常
package com.longshine.nio.test; //中断线程 public class ThreadTest { static class TmpThread extends Thread{ boolean started = true; public void run(){ while(started){ System.out.println("线程进行中"); try { sleep(10 * 10000); } catch (InterruptedException e) { } } System.out.println("线程已中断"); } public void stopThead(){ started = false; this.interrupt(); } } public static void main(String[] args) throws Exception{ TmpThread tt = new TmpThread(); tt.start(); Thread.sleep(1000); tt.stopThead(); } }
中断IO阻塞 interrupt方法不管用 了,可使用关闭IO的方法中止阻塞,如Socket的InputStream的read()方法,调用read()后关闭Socket,抛出IOException
package com.longshine.nio.test; import java.io.IOException; import java.net.InetSocketAddress; import java.net.ServerSocket; import java.net.Socket; import java.net.SocketTimeoutException; public class IOThreadTest { public static void main(String[] args) throws Exception{ new Server().start(); new Thread(){ public void run(){ try { new IOThreadTest().work(); } catch (Exception e) { } } }.start(); Thread.sleep(2000); socket.close(); } private static volatile Socket socket; public void work() throws Exception{ socket = new Socket(); socket.connect(new InetSocketAddress("127.0.0.1",8000)); System.out.println("连接服务器成功"); //读数据10秒后超时 socket.setSoTimeout(10000); System.out.println("读取数据中"); try{ socket.getInputStream().read(); } catch(SocketTimeoutException e){ System.out.println("超时中断"); } catch(IOException e){ System.out.println("线程中断"); } } private static class Server extends Thread{ public void run(){ try { startServer(); } catch (Exception e) { e.printStackTrace(); } } public void startServer() throws Exception{ ServerSocket serverSocket = new ServerSocket(); serverSocket.bind(new InetSocketAddress(8000)); System.out.println("服务启动"); serverSocket.accept(); System.out.println("客户端接入"); } } }
相关推荐
java中断线程的正确姿势完整示例.rar
主要介绍了Java中断线程的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
线程中断 静态方法(有关同步的细节) 总结 第五章 Java线程编程的例子 数据结构和容器 简单的同步例子 一个网络服务器类 AsyncInputStream类 使用TCPServer和AsynclnputStream 总结 第六章 Java线程调度 线程...
主要介绍了Java中断一个线程操作,结合实例形式分析了java中断线程相关的interrupt()、isInterrupted()及interrupted()函数使用技巧,需要的朋友可以参考下
Java 实例 - 中断线程源代码+详细指导教程.zip
该方法“中断线程”,但仅仅是会设置该线程的中断状态位为true,至于中断的结果线程是死亡、还是等待新的任务或是继续运行至下一步,就取决于这个程序本身。 线程会不时地检测这个中断标示位,以判断线程...
Java基本功之中断线程的理解[参考].pdf
java线程中断之interrupt和stop.docx
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
java的线程机制是抢占式的,这表示调试 机制会周期性的中断线程,将上下文切换到另一个线程,从而为每个线程都提供时间片,使得每个线程都分分配到数据合理的时间去驱动 它的任务。在多线程中,一般对于static用的...
锁定排序 3.6 线程优先级 3.7 监控程序线程 3.8 在应用程序中...线程中断 3.10 完成DownloadManager 3.11 线程中的过时方法 3.12 DownloadFiles类 3.13 未捕捉的异常 3.14 自愿放弃...
Java多线程与线程安全实践-基于Http协议的断点续传.rar 是一个Java毕业设计项目,旨在探讨如何在Java中实现多线程和线程安全,以及如何基于Http协议实现断点续传功能。该项目提供了一个完整的源代码包,可以作为学习...
interrupt字面上是中断的意思,但在Java里Thread.interrupt()方法实际上通过某种方式通知线程,并不会直接中止该线程
Java的中断是一种协作机制。也就是说调用线程对象的interrupt方法并不一定就中断了正在运行的线程,它只是要求线程自己在合适的时机中断自己,本文将详细介绍,需要了解的朋友可以参考下
Java线程中断示例程序的代码清单.pdf 学习资料 复习资料 教学资源
#Java多线程示例-Java多线程应用实例 1- Java多线程:启动线程 2- Java多线程:易失性–基本线程通信 3- Java多线程:同步 4- Java多线程:锁定对象 5- Java多线程:线程池 ...14- Java多线程:中断线程 从分叉
该Java程序使用Eclipse编写,完成了定时收发UDP的功能。其中体现了线程使用、Jni接口调用、精确定时、模拟鼠标串口等功能。
主要介绍了JAVA多线程之中断机制stop()、interrupted()、isInterrupted()的相关资料,需要的朋友可以参考下
之前在使用Java实现熔断降级组件的时候,需要实现接口请求的超时中断,通过查找相关资料了解了相关的方法,下面这篇文章主要给大家介绍了关于Java中实现线程的超时中断的相关资料,需要的朋友可以参考下