`
jerry006
  • 浏览: 9202 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

线程学习

JVM 
阅读更多
[size=18][/size][color=red][/color]今天学习了一下线程的一点东东,总结一下:首先Thinking in java上说线程存在4种状态:新建、可运行、死亡以及阻塞,但我觉得还有一个运行状态,这样整个过程才完整了。新建是指线程实例化,可运行就是我们通常start()方法调用,而运行就是run()方法执行了,死亡就是run()结束,至于阻塞状态就比较特别了,是在run()方法还没有结束,由于其它原因造成当前线程放弃cpu执行而进入的一种等待状态。造成阻塞的几种可能:1、线程sleep()方法,使线程进入睡眠状态;2、suspend()方法同样会造成线程暂停,但只有在resume()方法才能唤醒;3、wait()方法使当前线程停止,当外部条件成熟(时间到、或notify()方法调用),线程从新可行;4、等待一个IO流操作执行完成;5、等待其它线程的锁。
而stop、suspend方法已经被禁止使用。stop会造成对象状态的不连续性而使程序出现错误且难以定位。suspend与resume对的最大问题是容易造成死锁。
通过wait、notify、notifyAll方法进行等待、唤醒相对于sleep的优势是sleep并不释放当前获得得锁,而wait会释放。

wait、notify是Object里的方法,也就是在调用时都需要获取该对象的锁且在同步块(方法)中才能调用。一般是通过一个线程处理对象的消费,另一个对象处理对象的生产。在无“商品”可消费时,消费线程等待,到存储线程又生产了,再通过notify、notifyAll唤醒线程。这边注意notify、notifyAll都不能保证唤醒的线程就能马上运行。这是线程最大的特点:不可预见性,完全由JVM控制。
分享到:
评论

相关推荐

    C++多线程学习

    在"C++多线程学习"这个主题中,我们主要探讨的是如何在C++环境中创建和管理线程,以及解决并发访问时可能出现的问题。 一、C++11及后续版本中的多线程支持 自C++11标准开始,C++提供了内置的多线程库`<thread>`,...

    关于C# 多线程学习

    关于C#多线程学习,本篇将深入探讨在C#中如何管理和操作线程,包括启动、停止、暂停线程、调整线程优先级等关键知识点。 ### 启动线程 在C#中,启动一个新线程通常通过`Thread`类实现。创建一个新的线程对象时,...

    多线程学习笔记

    多线程学习笔记 iOS开发中,多线程是一种常见的技术手段,用于优化应用程序的性能,提升用户体验。多线程的核心是让程序能够并发地执行多个任务,合理地利用设备的计算能力,尤其是在拥有多个核心的处理器上。 ...

    C#多线程学习,学习多线程好资料。

    ### C#多线程学习详解 #### 一、多线程的基本概念 ##### 1. 什么是进程? 进程是程序的一次动态执行过程,它包含了正在运行的程序所需的内存、系统资源以及执行上下文。简单来说,当你启动一个程序时,操作系统会...

    Java线程学习和总结

    在Java编程语言中,线程是程序执行的基本单元,它允许程序并发地...同时,"Java线程学习和总结.files"目录下的文件可能是与文章相关的辅助资料,例如代码示例或图片。建议结合这些资料一起学习,以获得更全面的知识。

    C#多线程学习(二)

    【C#多线程学习(二)】 在C#编程中,多线程是一个重要的概念,它允许程序同时执行多个任务,从而提高了程序的效率和响应性。在本篇文章中,我们将深入探讨如何操纵线程,包括线程的状态以及线程优先级。 首先,...

    corejava多线程学习总结.pdf

    ### CoreJava多线程学习总结 #### 一、基本概念 多线程是现代软件开发中非常重要的一个概念,尤其在Java这样的高级编程语言中,它使得程序能够更高效地利用计算机资源,实现并发处理任务。为了更好地理解CoreJava...

    多线程学习文档

    ### 多线程学习文档知识点总结 #### 一、线程的基本概念及关系 ##### 进程(Process) - **定义**:进程是Windows系统中的一个基本概念,它包含了运行程序所需的所有资源。 - **特性**: - 相对独立性:一个进程...

    JAVA多线程学习内容

    总的来说,Java多线程学习涵盖了线程的创建、同步、通信、调度以及异常处理等多个方面,深入理解和掌握这些知识点对于提升Java程序的性能和复杂性至关重要。通过阅读提供的"Java多线程.pdf"文档,你可以进一步了解和...

    c#多线程学习代码资料

    总结,本资料“C#多线程学习代码资料”会涵盖这些知识点,并通过示例代码帮助初学者理解多线程的创建、同步、通信以及异常处理等概念,是学习C#多线程编程的良好起点。通过深入学习和实践,开发者能够更好地掌握多...

    C#多线程学习(一)

    C#多线程学习(一) 本篇文章将深入探讨C#中的多线程机制,涵盖了多线程的相关概念、进程、线程、多线程的好处和不利方面等。 一、什么是进程? 一个进程是指运行中的程序,包括程序所使用到的内存和系统资源。...

    java多线程学习资料

    ### Java多线程学习资料知识点解析 #### 一、引言 Java作为一种广泛使用的编程语言,在并发编程领域具有独特的优势。多线程是Java中实现并发处理的核心技术之一,能够显著提升程序的性能和响应性。本文将深入探讨...

    Java线程 学习

    ### Java线程学习知识点 #### 一、Java线程概览 - **定义与作用**:线程是在程序中独立且并发执行的路径。在Java中,线程被设计为语言的一部分,而不是作为操作系统的底层工具。每个Java程序至少包含一个主线程,在...

    多线程学习汇总资料,多线程学习汇总资料,

    本汇总资料主要聚焦于多线程的学习,旨在帮助开发者深入理解并熟练掌握这一技术。 多线程是指在单个程序中同时执行多个线程(或称为执行流)。这允许程序同时处理多个任务,如后台数据处理、用户界面更新等,提高了...

    java多线程学习

    在学习Java多线程的过程中,理解线程与进程的概念是非常基础且重要的一步。首先,进程是一个程序的执行实例,是操作系统资源分配的基本单位,具有独立的地址空间和运行状态。每个进程至少包含一个线程,我们称之为...

    c# 多线程学习资料

    C#中的多线程是程序设计中的重要概念,特别是在现代计算环境中,多核处理器和并发执行的需求使得多线程成为了优化性能的关键技术。在C#中,多线程的运用可以提升程序的并发能力,充分利用硬件资源,提高CPU的利用率...

    Java多线程学习Java多线程学习Java多线程学习Java多线程学习.txt

    Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java...

    Linux多线程学习

    最后,"Linux多线程学习(五)"可能对这些知识进行了综合应用或者讨论了高级话题,如死锁预防和线程池的实现。 掌握这些多线程编程技术对于开发高效的Linux应用程序至关重要,无论是系统编程、网络服务还是并行计算...

Global site tag (gtag.js) - Google Analytics