package com.java.util.concurrent; import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; public class Test1 { public static void main(String[] args) throws Exception { ExecutorService exeService = Executors.newFixedThreadPool(1); Future<Thread> future = exeService.submit(new CallableC<CallObj>(new CallObj())); // exeService.submit(new CallableC<CallObj>(new CallObj())); blocking quene Thread s = future.get();// get() is blocking System.out.println(s); System.out.println(s.isInterrupted()); } static class CallObj{ @Override public String toString() { return System.currentTimeMillis()+""; } } static class CallableC<V> implements Callable{ private V obj ; public CallableC(V o) { obj = o; } public Thread call() throws Exception { System.out.println("start....."); int i = 0; try { while (true) { call(obj); Thread.sleep(1000);// in sleep(),weather interrupted; i=7,currentThread is interrupted i++; if(i>5)// 7 times ; i=6 currentThread.interrupt() Thread.currentThread().interrupt(); } } catch (Exception e) { e.printStackTrace(); }finally{ System.out.println("done....."); } return Thread.currentThread(); } public String call(V arg){ System.out.println(Thread.currentThread().getName()); return null; } } }
中断特点:
1. 只能中断线程阻塞 时
2. 中断不影响thread代码逻辑,只是一个标志位的改变和中断异常的表示
Thread.currentThread().interrupt(); 会把Thread,中断标志位 标志为 true,
Thread.sleep() ; 方法内部Thread会判断当前线程的中断标志位,为true,则抛出中断异常
Thread被中断(这里(上面的代码)是指抛出中断异常了),thread仍继续执行,如果没有使用中断标志位进行其它的逻辑处理,中断就没有意义
相关推荐
本资料"java_Thread.rar"提供了一些Java多线程的实践案例,对于深入理解和应用Java多线程技术具有很高的参考价值。 首先,我们要理解线程的基本概念。线程是程序执行的最小单元,每个线程都拥有自己独立的程序...
在"06_Thread_java_boardkbl_"的压缩文件中,我们可以期待找到关于以上知识点的代码示例和详细注释,帮助我们更好地理解和应用Java中的线程机制。通过实践这些例子,开发者可以提高自己在并发编程领域的技能,编写出...
- 线程可以通过`interrupt()`方法请求中断,而线程内的代码应检查并适当地响应`InterruptedException`。 9. **线程池**: - 使用`ExecutorService`和`ThreadPoolExecutor`管理线程池可以更高效地控制线程的生命...
Java是一种广泛使用的面向对象的编程语言,以其跨平台、健壮性和安全性著称。这份"java_Java_学习笔记.zip"包含了丰富的Java基础知识,对于初学者来说是极好的...建议下载阅读,通过实践加深理解,逐步掌握Java编程。
在Java编程语言中,多线程是实现并发执行任务的关键技术。它允许程序同时执行多个独立的任务,从而提高..."MultiThread_java"这个资源可能涵盖了这些概念,通过学习和实践,我们可以更好地理解和掌握Java的多线程编程。
"JAVA Test_Thread"很可能是一个示例项目或测试用例,专门用于演示和理解Java中的多线程操作。在这个项目中,我们可能会看到如何创建、管理以及同步线程。 在Java中,有多种方式来创建线程: 1. **实现Runnable...
这通常通过修改线程的执行状态或调用`Thread.interrupt()`实现。 5. **循环调度**:在主程序中,设置一个主循环来不断执行调度过程,直到所有进程都完成执行。 6. **输出和可视化**:为了更好地理解算法的运行,...
9. **中断和异常处理**:Java允许线程中断,通过`Thread.interrupt()`方法实现。源码将展示如何响应中断请求,以及正确处理线程中断时抛出的`InterruptedException`。 10. **并发工具类**:`CountDownLatch`、`...
1. Thread.interrupt():用于中断线程,但不一定立即停止,需要在run()方法内部检查中断标志并作出相应处理。 2. InterruptedException:线程被中断时抛出的异常,通常需要捕获并处理。 九、线程死锁 1. 死锁的概念...
在这个`java_thread_source_code`压缩包中,我们很可能会找到Java `Thread`类的源代码实现,这将有助于深入理解Java线程的工作原理。 在Java中,`Thread`类是`java.lang`包的一部分,它是所有用户线程的超类。我们...
Java线程编程是Java开发中的重要组成部分,它允许程序同时执行多个任务,提高了应用程序的效率和...通过深入学习这些概念和实践,开发者能够更好地理解和处理多线程环境下的复杂问题,提升Java程序的并发性能和稳定性。
Java通过`java.lang.Thread`类和`java.util.concurrent`包提供了丰富的线程支持。创建线程有两种主要方式:继承Thread类和实现Runnable接口。继承Thread类直接复写run()方法,而实现Runnable接口则需要将run()方法...
Java中的线程处理是通过`java.lang.Thread`类及其相关接口来实现的。本篇文章将深入探讨Java中的线程概念、创建线程的方式以及线程的管理与同步。 一、线程基础 线程允许程序并发执行,提高了资源利用率和响应速度...
根据给定的文件信息,以下是对各个知识点的详细解析: ### 1. Sleep状态的打断唤醒 #### 知识点描述 在Java中,`Thread.sleep(long millis)` 方法可以使当前正在...这些知识点对于理解和掌握Java并发编程至关重要。
Java多线程开发是编程领域中的重要组成部分,尤其在当今多核处理器的普遍使用下,理解和掌握多线程编程显得尤为重要。多线程允许程序同时执行多个任务,从而充分利用系统资源,提高程序的效率和响应速度。 在Java中...
以上是Java多线程机制的主要知识点,理解并熟练掌握这些概念对于编写高效、可靠的并发程序至关重要。在实际开发中,合理地利用线程能够优化程序性能,提升用户体验。通过深入学习和实践,我们可以更好地驾驭Java的多...
然而,理解`interrupt()`方法的正确使用方式至关重要,因为直接调用`interrupt()`并不总是能立即停止线程。本文将深入探讨`interrupt()`方法的工作原理,以及如何有效地利用它来中断线程。 首先,`Thread.stop`方法...
这个"java-thread-vedio.rar_java vedio"压缩包文件显然包含了关于Java多线程的视频教程,适合初学者或者需要深化理解多线程的开发者学习。下面我们将详细探讨Java线程的相关知识点。 1. **线程的创建方式**: - *...
在Java编程语言中,`interrupt()` 和 `sleep()` 是两个非常关键的方法,它们与线程的控制和管理密切相关。理解这两个方法的工作原理是构建多线程应用程序的基础。 首先,我们来探讨 `interrupt()` 方法。在Java中,...
在实际编程中,理解和掌握Java多线程编程对于提升程序性能和优化资源利用至关重要。通过阅读提供的"JAVA多线程编程详解-详细操作例子.doc"文档,你可以深入了解这些概念并学习如何在实际项目中应用。