首页
技术知识库
Task工作计划
网站简介
DON框架
后台管理
文章分类
JAVA
框架知识
操作系统
容器相关
数据库层
优化技术
界面编程
网络编程
开发工具
GO语言
其他
读书随笔
观影随笔
每日随笔
APP
Java中结束Thread线程的方法
所属分类
:[JAVA] |
创建时间
:2014-11-20 |
文章属性
:原创 |
文章来源
:http://windfly.cn |
作者
:windfly
##主动结束 >1. 线程中新建stopThread方法,以方便其它类调用 1. 在stopThread方法中调用interrupt方法,打断所有使用wait或sleep的休眠方法 1. 如果在线程体内有其它阻塞方法调用,要主动调用阻塞方法的结束方法 ``` final DatagramSocket socket = new DatagramSocket(); Thread thread = new Thread(new Runnable() { @Override public void run() { try { System.out.println("thead begin"); socket.receive(new DatagramPacket(new byte[1], 1)); } catch (IOException e) { e.printStackTrace(); } try { Thread.sleep(Long.MAX_VALUE); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("thead end"); } }); thread.start(); Thread.sleep(2000); // 等待线程启动 thread.interrupt(); // 要主动调用,取消Thread.sleep效果,不然thread线程不会结束 socket.close(); // 要主动调用,取消socket.receive效果,不然thread线程不会结束 System.out.println("main thread end"); ``` ##被动结束 >1. main方法主线程中创建新的后台服务线程 1. 新线程设置为deamon线程 1. 主线程结束后,服务线程自动结束 ``` Thread thread = new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(Long.MAX_VALUE); } catch (InterruptedException e) { e.printStackTrace(); } } }); thread.setDaemon(true); thread.start(); Thread.sleep(2000); // 等待线程启动 System.out.println("main thread end"); ```
返回