线程阻塞

线程在运行的过程中因为某些原因而发生阻塞,阻塞状态的线程的特点是:该线程放弃CPU的使用,暂停运行,只有等到导致阻塞的原因消除之后才回复运行。或者是被其他的线程中断,该线程也会退出阻塞状态,同时抛出InterruptedException。

一般线程中的阻塞:

A、线程执行了Thread.sleep(int millsecond);方法,当前线程放弃CPU,睡眠一段时间,然后再恢复执行

B、线程执行一段同步代码,但是尚且无法获得相关的同步锁,只能进入阻塞状态,等到获取了同步锁,才能回复执行。

C、线程执行了一个对象的wait()方法,直接进入阻塞状态,等待其他线程执行notify()或者notifyAll()方法。

D、线程执行某些IO操作,因为等待相关的资源而进入了阻塞状态。比如说监听system.in,但是尚且没有收到键盘的输入,则进入阻塞状态。

线程挂起

线程的挂起操作实质上就是使线程进入"非可执行"状态下,在这个状态下CPU不会分给线程时间片,进入这个状态可以用来暂停一个线程的运行。在线程挂起后,可以通过重新唤醒线程来使之恢复运行。

Thread 的API中包含两个被淘汰的方法,它们用于临时挂起和重启某个线程,这些方法已经被淘汰,因为它们是不安全的,不稳定的。如果在不合适的时候挂起线程(比如,锁定共享资源时),此时便可能会发生死锁条件——其他线程在等待该线程释放锁,但该线程却被挂起了,便会发生死锁。另外,在长时间计算期间挂起线程也可能导致问题。

线程挂起是操作系统底层的逻辑。线程阻塞是JAVA的逻辑。一定程度上说,JAVA中的线程阻塞(sleep 锁等待 wait等)是通过挂起实现的(挂起线程是其中一种实现阻塞的方式,还有一种是不断的try lock)。

转载于:https://www.cnblogs.com/xiaolang8762400/p/7072095.html

线程阻塞和挂起(网络收集)相关推荐

  1. 线程和进程/阻塞和挂起以及那些sleep,wait()和notify()方法详解

    线程与进程的阻塞 线程阻塞 线程在运行的过程中因为某些原因而发生阻塞,阻塞状态的线程的特点是:该线程放弃CPU的使用,暂停运行,只有等到导致阻塞的原因消除之后才回复运行,或者是被其他的线程中断,该线程 ...

  2. 线程的挂起是错误的概念实际是线程的阻塞,挂起只针对进程,将进程挂起会将进程从内存空间交换到磁盘空间的过程

    线程的挂起是错误的概念实际是线程的阻塞 线程的主要状态有运行态,就绪态和阻塞态.挂起态对线程没有什么意义,这是由于此类状态是一个进程级的概念.特别地,如果一个进程被换出,由于它的所有线程都该进程的地址 ...

  3. 线程和进程/阻塞和挂起

    曾多次迷惑于阻塞和挂起状态,后来才发现,有一些文章没有区别,把(阻塞.挂起.等待)等同了,这时看语境作者说的是哪个.自己加以分析区别. 先大概这样理解一下: 挂起:一般是主动的,由系统或程序发出,甚至 ...

  4. Silverlight+WCF 实战-网络象棋最终篇之非线程阻塞倒计时窗口(四)

    前言: 在前面的系列中,我们虽然完成了其大部分功能,但是,离正真运行,还是有一大段距离 当你F5运行时,在弹出对话框之后,如果你不即时点确定,或者上个WC回来之后,你会发现已经提示出错了 这节开始,我 ...

  5. weblogic线程阻塞性能调优(图解)

    转自:http://blog.csdn.net/z69183787/article/details/12647539 声明:出现这个问题有程序方面.网络方面.weblogic设置方面等等原因,此文章主 ...

  6. weblogic线程阻塞性能调优(图解)转

    声明:出现这个问题有程序方面.网络方面.weblogic设置方面等等原因,此文章主要讲述由于weblogic设置而导致的解决办法. 因为: 1.程序问题,需要项目自己去解决,weblogic在做优化处 ...

  7. oracle线程阻塞_Oracle Service Bus –线程阻塞案例研究

    oracle线程阻塞 本案例研究描述了在AIX 6.1和IBM Java VM 1.6上运行的Oracle Service Bus 11g遇到的线程阻塞问题的完整根本原因分析过程. 本文也是您提高线程 ...

  8. Oracle Service Bus –线程阻塞案例研究

    本案例研究描述了在AIX 6.1和IBM Java VM 1.6上运行的Oracle Service Bus 11g遇到的线程阻塞问题的完整根本原因分析过程. 本文也是您提高线程转储分析技能的绝佳机会 ...

  9. C++ 技术资料(大视野网络收集) 1

    C++ 技术资料(大视野网络收集) 用VC制作初始画面 宋端智 贾皓丽 VC命名管道通信的实现 冷山述 用VC修改目录的日期和时间 温卫红 基于人机对战的五子棋游戏 胡朝晖 在ActiveX控件中引入 ...

最新文章

  1. 成为技术领导者——解决问题的有机方法
  2. linux samba代码,Linux下Samba服务器源码安装及配置
  3. SAP CRM Appointment应用里Date profile的配置
  4. Codeforces Round #712 (Div. 2) E. Travelling Salesman Problem 思维转换
  5. 【转】Azure应用部署方式对比
  6. Express-router
  7. C语言输出空格逐级递减,2021年计算机2级c语言笔试部分-20210514115908.doc-原创力文档...
  8. Java 进阶基础知识
  9. keras读取训练好的模型参数并把参数赋值给其它模型
  10. MATLAB怎么加0x,matlab 0xc0150002的解决办法
  11. 基于SSM的医院预约挂号系统 JAVA MYSQL
  12. MATLAB2018simulink打不开MATLAB2019b的simulink,低版本simulink模型出现
  13. IN 与 DISTINCT
  14. Scheme Language
  15. image_thumb
  16. 注解@AllArgsConstructor @NoArgsConstructor是 什么意思
  17. python获取视频帧率,总帧数,分辨率等视频信息
  18. 修复安装OFFICE时提示错误的解决方法
  19. 土办法解决日期转换问题,转出格式为。。。 贰零壹陆年零壹月零捌日
  20. Opencv(python)图像梯度和边缘检测算法

热门文章

  1. Gartner预测:SD-WAN将取代路由
  2. 《网站性能监测与优化》一2.3 协作网站
  3. 重载赋值运算符含动态申请
  4. linux spinlock mutex semaphore
  5. table选项卡从A页面点击进入B页面指定版块
  6. WPF不同线程之间的控件的访问
  7. android进程 系统启动过程 android boot sequence
  8. css float(脱离正常流:向左/右浮动直到父元素/另一float, 不占空间)
  9. bulid-tool
  10. jinjia2 模板不解析html