iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java线程终止实例分析
  • 419
分享到

Java线程终止实例分析

2023-06-30 10:06:07 419人浏览 泡泡鱼
摘要

这篇文章主要介绍了Java线程终止实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java线程终止实例分析文章都会有所收获,下面我们一起来看看吧。题目解析答案选CA:线程使用sleep()方法,使线程挂起

这篇文章主要介绍了Java线程终止实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java线程终止实例分析文章都会有所收获,下面我们一起来看看吧。

Java线程终止实例分析

题目解析

答案选C

A:线程使用sleep()方法,使线程挂起一段时间,并不是终止

B: 创建一个新线程时,对之前的线程没有影响

C:抛出一个例外,线程终止

D: 并不是终止,而是抢占,进程是资源分配的最基本单位,同一个进程创建的不同线程共享这些资源,当某一个线程优先级比较高时,它就会抢占其他线程的资源,导致其他线程没有资源可用,会造成阻塞

线程结束的三个原因

run方法执行完成,线程正常结束

线程抛出一个未捕获的Exception或者Error

直接调用该线程的Stop方法结束线程(不建议使用,容易导致死

具体分析

线程结束的三种方法

①使用标志位退出线程

②使用stop方法强制终止线程

③使用interrupt终止线程

1、使用标志位推出线程

一般 run()方法执行完,线程就会正常结束,然而,常常有些线程是伺服线程。它们需要长时间的运行,就要使用一个变量控制循环

定义了一个退出标志 exit,当 exit 为 true 时,while 循环退出,exit 的默认值为 false.在定义 exit 时,使用了一个 Java 关键字 volatile,这个关键字的目的是使 exit 同步,同一时刻只 能由一个线程来修改 exit 的值

public class ThreadSafe extends Thread {  public volatile boolean exit = false;     public void run() {      while (!exit){     //do something     }  } }

2、使用stop方法强制终止线程

程序中可以直接使用 thread.stop()来强行终止线程,但是 stop 方法是很危险的,就象突然关 闭计算机电源,而不是按正常程序关机一样,可能会产生不可预料的结果,不安全主要是: thread.stop()调用之后,创建子线程的线程就会抛出ThreadDeatherror 的错误,并且会释放子 线程所持有的所有锁。

3、使用interrupt终止线程

当线程处于两种状态时,使用interrpt终止

(1)线程未处于阻塞状态:

使用 isInterrupted()判断线程的中断标志来退出循环,再使用 interrupt()方法时,中断标志就会置 true,和使用自定义的标志来控制循环是一样的

public class MyThread extends Thread {    @Override    public void run() {        try {            for (int i = 0; i < 500000; i++) {                if (interrupted()) {                    System.out.println("已经是停止状态了");                    throw new InterruptedException();//中断异常                }                System.out.println("i=" + (i + 1));            }            System.out.println("我在for下面");        } catch (InterruptedException e) {            System.out.println("进run方法中的catch了!");            e.printStackTrace();        }     }}

(2)线程处于阻塞状态:如使用了sleep方法,同步锁的 wait,Socket 中的 receiver,accept 等方法时,调用线程的 interrupt()方法

public class ThreadInterrupt extends Thread {      public void run()  {          try {              sleep(50000);  // 延迟50秒          }          catch (InterruptedException e) {              System.out.println(e.getMessage());          }      }      public static void main(String[] args) throws Exception  {          Thread thread = new ThreadInterrupt();          thread.start();          System.out.println("在50秒之内按任意键中断线程!");          System.in.read();          thread.interrupt();          thread.join();          System.out.println("线程已经退出!");      }

关于“Java线程终止实例分析”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Java线程终止实例分析”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。

--结束END--

本文标题: Java线程终止实例分析

本文链接: https://www.lsjlt.com/news/328164.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java线程终止实例分析
    这篇文章主要介绍了Java线程终止实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java线程终止实例分析文章都会有所收获,下面我们一起来看看吧。题目解析答案选CA:线程使用sleep()方法,使线程挂起...
    99+
    2023-06-30
  • Java 多线程中stop停止线程实例分析
    这期内容当中小编将会给大家带来有关Java 多线程中stop停止线程实例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。package com.stop;import java.ut...
    99+
    2023-06-02
  • Java语言多线程终止中的守护线程实例
    Java中线程分为两种类型:用户线程和守护(服务)线程。通过Thread.setDaemon(false)设置为用户线程;通过Thread.setDaemon(true)设置为守护线程;不设置则默认为用户线程。结束单线程用 Thread.i...
    99+
    2023-05-30
  • Java线程实例分析
    今天小编给大家分享一下Java线程实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。启动一个线程T1=new YourT...
    99+
    2023-06-03
  • Java终止线程实例和stop()方法源码阅读
    了解线程概念线程 是程序中的执行线程。Java 虚拟机允许应用程序并发地运行多个执行线程。线程特点拥有状态,表示线程的状态,同一时刻中,JVM中的某个线程只有一种状态;·NEW尚未启动的线程(程序运行开始至今一次未启动的线程)·RUNNAB...
    99+
    2023-05-30
  • JAVA多线程编程实例分析
    今天小编给大家分享一下JAVA多线程编程实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.三个售票窗口同时出售20张...
    99+
    2023-06-27
  • java两阶段终止线程怎么实现
    这篇文章主要讲解了“java两阶段终止线程怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“java两阶段终止线程怎么实现”吧!一、怎么优雅地关闭一个线程?在一个线程T1中如何优雅地关闭...
    99+
    2023-06-25
  • Java 终止线程的几种方式
    一、正常运行结束 所谓正常运行结束,就是程序正常运行结束,线程自动结束。 public class ThreadTest extends Thread { public void run() ...
    99+
    2023-08-31
    java jvm 开发语言
  • Java线程同步问题实例分析
    这篇文章主要讲解了“Java线程同步问题实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java线程同步问题实例分析”吧!1.场景有五位沉默的哲学家围坐在一张圆桌旁,他们一生都在吃东西...
    99+
    2023-06-29
  • Java多线程面试题实例分析
    这篇文章主要介绍了Java多线程面试题实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java多线程面试题实例分析文章都会有所收获,下面我们一起来看看吧。问题一A线程正在执行一个对象中的同步方法,B线程是...
    99+
    2023-06-29
  • Java中终止线程的方法详解
    Java中终止线程的方式主要有三种:使用stop()方法,已被弃用。原因是:stop()是立即终止,会导致一些数据被到处理一部分就会被终止,而用户并不知道哪些数据被处理,哪些没有被处理,产生了不完整的“残疾”数据,不符合完整性,所以被废弃。...
    99+
    2023-05-31
    java 终止线程 ava
  • 怎么在Java中终止一个线程
    这篇“怎么在Java中终止一个线程”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么在Java中终止一个线程”文章吧。Thr...
    99+
    2023-07-05
  • python怎么终止线程
    这篇文章主要为大家展示了python怎么终止线程,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“python怎么终止线程”这篇文章吧。python是什么意思Python是一种跨平台的、具有解释性、编...
    99+
    2023-06-06
  • Java并发线程池实例分析讲解
    目录一.为什么要用线程池二.线程池的好处三.原理解析四.4种线程池五.线程池处理流程六.源码分析一.为什么要用线程池 先来看个简单的例子 1.直接new Thread的情况: ...
    99+
    2023-02-02
    Java并发线程池 Java线程池
  • Java线程安全与同步实例分析
    本篇内容介绍了“Java线程安全与同步实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!线程安全问题多个线程可能会共享(访问)同一个资源...
    99+
    2023-06-30
  • java线程编程的示例分析
    这篇文章给大家分享的是有关java线程编程的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。线程基础◆线程(thread)其实是控制线程(thread of control)的缩写.每一个线程都是独立的,因...
    99+
    2023-06-03
  • Java线程池的示例分析
    小编给大家分享一下Java线程池的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!为什么需要线程池我们知道创建线程的常用方式就是 new Thread() ...
    99+
    2023-06-22
  • Java多线程的示例分析
    这篇文章给大家分享的是有关Java多线程的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。线程的创建继承Thread实现Runnable实现Callable使用继承Thread类来开发多线程的应用程序在设计...
    99+
    2023-06-20
  • Java中线程的示例分析
    这篇文章主要介绍了Java中线程的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。什么是进程?电脑中时会有很多单独运行的程序,每个程序有一个独立的进程,而进程之间是相互...
    99+
    2023-06-25
  • Java多线程并发、并行、线程与进程实例分析
    本篇内容介绍了“Java多线程并发、并行、线程与进程实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、并发与并行并发:指两个或多个事...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作