`

多线程测试interrupt作用的小例子

 
阅读更多

class Demo implements Runnable{

      public void run(){

       try{

      System.out.println("**********************in run()-这个线程休眠20秒");

       Thread.sleep(20000); //Thread.sleep(2000);

      System.out.println("**********************in run-继续进行!");

       }catch(Exception e){

          System.out.println("**********************in run()-中断线程!");

         }

         System.out.println("**********************in run()-休眠以后继续进行!");

         System.out.println("**********************in run()-正常退出");

         }

         }

  public class InterruptThread{

        public static void main(String[] args){

             Demo d=new Demo();

             Thread t=new Thread(d);

             t.start();

             try{

                 Thread.sleep(2000);//Thread.sleep(20000)'

}catch(Exception e){

              

               }

               System.out.println("**********************in main()-中断其他线程!");

              t.interrupt();

               System.out.println("**********************in main()-退出!");

             }

          }
 /*
说明代码1与代码2
注意上面的时间一个是2000,一个是20000.换了一下位置。这样就会造成不一样的结果。

3、为什么会这样那?
因为上面的代码都是多线程的,因为main方法就是一个线程。main方法的线程和其他方法线程是交替运行的,不分优先级。在main方法里面用了一个interrupt()方法,它的作用就是,中断线程的作用。
方法1、里面在main方法中Thread.sleep(2000);休眠的时间比较短。而run方法里面Thread.sleep(20000);休眠的时间比较长。因为main线程与run线程是等级的。所以main()方法休眠了一会以后,run()还休眠中。这样就会造成main()方法有机会去执行t.interrupt();这样就中断了线程。造成了run()方法会报异常。
如果main()方法里面的Thread.sleep(20000)改成2万。这样会等到run()线程运行完后,才去调用t.interrupt();,不会造成run()方法线程的中断。
这就是简单的interrupt()方法的简单用法!!!*/

分享到:
评论

相关推荐

    一个多线程ping的例子

    这个例子,"一个多线程ping的例子",显然旨在演示如何利用多线程来同时ping多个IP地址,以检查它们的网络可达性。在实际应用中,这种技术可能用于监控网络状态、批量检测服务器的在线情况或者优化网络诊断工具。 ...

    Java高级特性 - 多线程练习题.zip

    在这个"Java高级特性 - 多线程练习题.zip"中,我们可以看到两个文件,分别是"顺序输出.txt"和"售票窗口.txt",它们很可能是用来展示或测试多线程编程概念的例子。 1. **线程的创建与启动** Java中创建线程主要有两...

    汪文君高并发编程实战视频资源下载.txt

     高并发编程第三阶段01讲 AtomicInteger多线程下测试讲解.mkv  高并发编程第三阶段02讲 AtomicInteger API详解,以及CAS算法详细介绍.mkv  高并发编程第三阶段03讲 利用CAS构造一个TryLock自定义显式锁.mp4  高...

    汪文君高并发编程实战视频资源全集

     高并发编程第三阶段01讲 AtomicInteger多线程下测试讲解.mkv  高并发编程第三阶段02讲 AtomicInteger API详解,以及CAS算法详细介绍.mkv  高并发编程第三阶段03讲 利用CAS构造一个TryLock自定义显式锁.mp4  高...

    threadTest:线程相关练习

    在进行线程测试时,通常会涉及到性能分析和调试,如使用`ThreadMXBean`获取线程信息,或者利用`jconsole`或`VisualVM`等工具进行内存和CPU监控。 总的来说,`threadTest`项目提供了丰富的并发编程实践,涵盖了线程...

    Java并发编程示例(十):线程组

    这个例子展示了线程组如何提供一种方便的方式来控制和管理一组线程的行为。 然而,如前面提到的,现代Java并发编程更倾向于使用`Executor`框架,例如`ExecutorService`,它可以更灵活地管理线程池,支持线程池的...

    Windows驱动开发技术详解 例子原代码

    5. **同步和调度**:在多线程环境下,驱动程序需要确保对硬件的访问是同步的,防止数据冲突。这可以通过使用IRQL(Interrupt Request Level)或锁机制来实现。 6. **调试和测试**:由于驱动程序运行在核心层,调试...

    evc 源码示例程序

    6. **多线程编程**:为了实现并发读写或者与其他任务并行处理,开发者可能需要使用多线程技术。EVC支持Windows CE的线程API,如CreateThread和ExitThread等。 7. **调试工具**:EVC集成了调试工具,开发者可以利用...

    SO1SemaforosEx1

    信号量是操作系统中用于同步进程的一种机制,尤其是在多线程环境中。在Java中,虽然不是原生支持信号量,但可以通过`java.util.concurrent`包中的`Semaphore`类来实现。 描述中没有提供额外的信息,所以我们主要...

    09淘宝校园招聘笔试题

    **完成一段代码,代码有三个线程,主线程由Main进入,启动一个生产者线程和一个消费者线程,生产者线程随机产生整数,并且把这个整数放入一个List中,消费者从List中取出数据进行显示** - **分析:** - 使用Java的...

    Zguide文档中文翻译

    这对于构建复杂的多线程应用程序非常有用。 **节点协调:** `syncpub.c`和`syncsub.c`示例展示了如何协调多个节点之间的同步操作。这对于构建可靠的分布式系统尤为重要。 **零拷贝:** ZeroMQ支持零拷贝技术,这...

    Linux Kernel 2.4 Internals

    3. **BIOS POST(基本输入输出系统 加电自检)**:这是计算机启动的第一步,检查硬件设备的可用性并进行初步的硬件测试。 4. **boot sector和setup**:这些是引导过程中负责加载内核到内存的关键部分,确保内核能够...

Global site tag (gtag.js) - Google Analytics