package self; /* *由主线程产生一个副线程,监控副线程的运行时间,如果运行时间过长,则杀掉副线程 * */ public class TestThread { public static void main(String[] args){ //创建副线程 Thread minorThread = new Thread(new MinorThread()); //创建主线程,副线程随主线程一起启动 Thread majorThread = new Thread(new MajorThread(minorThread)); majorThread.start(); } } class MajorThread implements Runnable { Thread thread = null; public MajorThread(Thread thread){ this.thread = thread; } @Override public void run(){ long startTime = System.currentTimeMillis(); //启动副线程 thread.start(); while(thread.isAlive()){ try { System.out.println("thread is Alive "); /* *使用join(1000) 主线程将等待1s,先让thread执行 * 如果join() 没有指定等待时间,则默认先让thread执行完毕之后,在执行当前线程 */ thread.join(1000); long runningTime = System.currentTimeMillis(); long endTime = (runningTime-startTime)/1000; /* * 如果超过3s thread还没有执行完毕,则直接kill掉thread线程 */ if(endTime>3){ //中断线程 thread.interrupt(); System.out.println("超过3s thread还没有执行完毕,则直接kill掉thread线程"); //让thread线程执行完 thread.join(); } } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } System.out.println("thread is not Alive ... finish!"); } } class MinorThread implements Runnable { String[] massages = { "ji hai bo...", "zhang xiao yan...", "hello world...", "OK OK!", "too too" }; @Override public void run() { System.out.println(Thread.currentThread().getName() + " is start"); try{ for (String massage : massages) { System.out.println(massage); Thread.sleep(1000); } } catch (InterruptedException e) { System.out.println("Thread interrupted..................."); e.printStackTrace(); } /*while (true) { //隔一分钟打印一次 for (String massage : massages) { System.out.println(massage); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); return; } } if (Thread.interrupted()){ System.out.println("Thread interrupted"); try { throw new InterruptedException(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }*/ } }
相关推荐
Java线程中wait、await、sleep、yield、join用法汇总,文章里面总结了这些关键字的用法,并且里面带有源码帮助分析用法,此一文就可以理解这些关键字用法,推荐拥有
浅谈Java线程join方法使用方法 Java中的线程join方法是一种实现线程同步的方式,可以将原本并行执行的多线程方法变成串行执行的。在Java中,线程join方法的作用是使当前线程等待另一个线程的结束,然后再继续执行...
`start()`方法启动线程,`sleep()`方法让线程进入堵塞状态,`join()`方法等待线程执行完成,`yield()`方法让当前线程让出CPU,`stop()`方法停止线程(不推荐使用,因为可能引起数据不一致),`interrupt()`方法中断...
Java线程有10个优先级(MIN_PRIORITY, NORM_PRIORITY, MAX_PRIORITY),默认优先级是NORM_PRIORITY。但是,线程优先级并不保证绝对的执行顺序,操作系统调度策略可能影响实际执行顺序。 7. join()方法: 一个线程...
Java线程是Java编程语言中的一个核心概念,它允许程序同时执行多个任务,极大地提高了程序的并发性和效率。在Java中,线程是程序执行的最小单元,它们共享同一内存空间,可以并行运行,相互协作完成复杂的任务。Java...
Java线程是多任务编程的重要概念,它允许程序同时执行多个独立的任务,从而提高系统效率和响应速度。在Java中,线程可以分为用户线程和守护线程,前者是程序运行的基础,而后者是在所有用户线程结束时才终止的后台...
本资源"JAVA线程学习(源代码)"提供了关于Java线程的源代码示例,帮助我们深入理解和实践线程的使用。 首先,我们要理解Java中的线程模型。Java线程由`java.lang.Thread`类或`java.util.concurrent.Executor`框架来...
Java线程是多任务编程中的核心概念,它允许程序同时执行多个不同的任务,极大地提高了程序的效率和响应性。在Java中,线程是通过Java.lang.Thread类或实现Runnable接口来创建和管理的。这份“java线程文档大全”包含...
Java线程是Java编程语言中的一个核心概念,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在Java中,线程是通过类`Thread`或实现`Runnable`接口来创建和管理的。Java线程模型是基于操作系统的原生...
阻塞状态通常发生在线程等待I/O操作完成、调用sleep()方法、等待锁释放或者调用join()方法等待其他线程结束时。 在`threadTest`这个案例中,我们可能会看到如何使用这些概念来创建实际的应用场景。例如,一个典型的...
本文将深入探讨Java线程的核心概念、API以及在实际开发中的应用,旨在帮助你理解和掌握这一关键技能。 首先,我们需要了解什么是线程。在单核CPU系统中,线程是操作系统调度的基本单位,而在多核CPU系统中,每个...
主要介绍了java 线程方法join简单用法,结合实例形式总结分析了Java线程join方法的功能、原理及使用技巧,需要的朋友可以参考下
在Java多线程编程中,理解并正确使用`yield`和`join`方法是至关重要的。这两个方法都属于线程控制策略的一部分,但它们的作用和使用场景有所不同。 首先,我们来详细探讨`Thread.yield()`方法。这个方法的目的是让...
- `join()`方法:让当前线程等待另一个线程完成其执行。 4. **线程优先级与调度**:Java的`Thread`类提供了设置线程优先级的方法,如`setPriority(int priority)`,但实际线程调度依赖于操作系统的策略,优先级并...
本文将深入探讨Java线程的相关知识点,帮助开发者理解并掌握Java线程的使用。 ### 1. 线程的创建 在Java中,有两种主要的线程创建方式: - **继承Thread类**:通过创建一个新的Thread类的子类,并重写它的`run()`...
一个线程join另一个线程,(包括和interrupt互动的用法)1---马克-to-win java视频
另外,`java.lang.Thread`类也提供了一种实现线程超时的方法,通过使用`join`方法。`join`可以等待某个线程结束,同时可以设置一个等待时限。 ```java Thread thread = new Thread(() -> { // 需要监控的线程代码 ...
Java线程是Java编程中的重要概念,它允许程序同时执行多个任务,从而提高了程序的效率和响应性。在Java中,线程是程序执行的最小单位,由Java虚拟机(JVM)管理。本教程将深入讲解Java线程的基础知识,帮助你掌握多...
本文将通过三个实用的例子,讲解 Java 多线程的基本概念和使用方法。 第一个例子:创建多线程 在 Java 中,可以通过继承 Thread 类或实现 Runnable 接口来创建多线程。在第一个例子中,我们将继承 Thread 类来创建...
在Java编程语言中,线程是程序执行的基本单元,它允许程序并发地执行多个任务。在多线程环境中,程序的...在编写`test`这样的示例时,你可以创建并启动线程,测试各种线程控制和同步方法,从而加深对Java线程的理解。