`
jsczxy2
  • 浏览: 1277082 次
  • 性别: Icon_minigender_1
  • 来自: 常州
文章分类
社区版块
存档分类
最新评论

java综合学习(一):线程和进程

阅读更多

1.进程
          当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。而一个进程又是由多个线程所组成的。
线程:线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。
多线程:多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。

 

 

2.与操作系统相关
          每一个进程都提供了运行一个程序所必需的资源,一个进程具有4GB的虚拟地址空间(Windows   NT   Server   Enterprise   Edition及Windows   2000   Advanced   Server中低3GB虚拟地址空间供进程使用,高1GB供操作系统的内核代码使用。Windows   NT/2000中低2GB供进程使用,高2GB供操作系统内核代码使用。Windows9X:0——64K只读空间用来装入Microsoft   DOS信息,64K——4M装入DOS的兼容代码,4M——2GB的私有空间供进程使用,2GB——3GB的共享空间装入各种DLL代码,3GB——4GB为共享的系统内核代码空间,其中共享的2GB——4GB的空间是99%的“内存无效页错误”、“General   Protect   Error(GPE)”及蓝屏的罪魁祸首。),可执行代码,数据,对象句柄,环境变量,优先权以及设置最大化最小化的功能。

 

 

3.内存
         每一个进程都从一个主线程开始执行,但可以在它所拥有的线程中创建额外的线程。一个进程的所有线程共享进程的虚拟地址空间和系统资源,一个线程的资源包括线程的机器寄存器设置,内核堆栈,线程环境变量和进程虚拟地址中的用户堆栈。

 

 

4.引入线程的好处
        (1)易于调度。
        (2)提高并发性。通过线程可方便有效地实现并发性。进程可创建多个线程来执行同一程序的不同部分。
        (3)开销少。创建线程比创建进程要快,所需开销很少。

        (4)利于充分发挥多处理器的功能。通过创建多线程进程(即一个进程可具有两个或更多个线程),每个线程在一个处理器上运行,从而实现应用程序的并发性,使每个处理器都得到充分运行。

 

 

5.多线程的优劣
         优点:可以提高CPU的利用率。在多线程程序中,一个线程必须等待的时候,CPU可以运行其它的线程而不是等待,这样就大大提高了程序的效率。
         缺点:线程也是程序,所以线程需要占用内存,线程越多占用内存也越多;
                  多线程需要协调和管理,所以需要CPU时间跟踪线程;
                  线程之间对共享资源的访问会相互影响,必须解决竞用共享资源的问题;
                  线程太多会导致控制太复杂,最终可能造成很多Bug;

 

 

6.进程和线程的关系
        (1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。
        (2)资源分配给进程,同一进程的所有线程共享该进程的所有资源。
        (3)处理机分给线程,即真正在处理机上运行的是线程。
        (4)线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。

分享到:
评论

相关推荐

    java 线程详解及线程与进程的区别

    Java线程详解与进程的区别是...了解线程与进程的区别以及如何在Java中创建和管理线程,对于开发高效、健壮的多线程应用至关重要。正确地处理线程同步和通信可以避免死锁、活锁和饥饿等问题,确保程序的稳定性和正确性。

    java线程+java IO操作

    Java线程和IO操作是Java编程中的核心概念,它们在构建高效、响应迅速的应用程序时起着至关重要的作用。在Java中,线程用于实现并发执行,而IO操作则涉及数据的读取和写入。这两者结合可以创建能够同时处理多个输入/...

    模拟操作系统对进程的调度 JAVA

    综上所述,JAVA模拟操作系统对进程的调度是一个涵盖进程管理、线程同步、调度算法等多个核心概念的实践项目。通过编写和调试这样的代码,开发者能更深刻地理解操作系统的内部运作,并提升并发编程能力。

    Java操作系统课设之模拟进程管理系统

    在本项目"Java操作系统课设之模拟进程管理系统"中,我们主要探讨了如何利用Java编程语言来模拟实际操作系统中的进程管理...这个模拟进程管理系统是一个综合性的实践平台,对于提升IT专业学生的综合素质具有重要意义。

    线程和多线程PPT学习教案.pptx

    线程和多线程是计算机科学中的重要概念,特别是在并发编程和系统设计中起到关键作用。线程可以理解为程序中的一个单一顺序...在实际编程中,需要综合考虑线程安全、性能优化和资源管理等因素,确保程序的正确性和效率。

    java多线程.pdf

    综合来说,Java多线程编程提供了一个强大的机制来处理复杂的并发场景,使得程序可以在多核处理器上更高效地运行。不过,开发者需要对并发编程有深入的理解,并掌握相关的设计模式和最佳实践,才能编写出既高效又稳定...

    java进程调度算法

    4. 高响应比优先(HRN,Highest Response Ratio Next):综合考虑进程的等待时间和执行时间,计算响应比,然后选取响应比最高的进程。在Java中,你需要维护每个进程的等待时间、执行时间和响应比,并在每次调度时...

    模拟多进程并发

    综上所述,这个“模拟多进程并发”的项目不仅涵盖了Java的并发编程,还涉及到了Swing的GUI开发,是一个综合性的学习和实践案例。通过这个项目,开发者可以深入理解多线程、并发控制、GUI编程以及性能优化等多个关键...

    java模拟进程调度算法和进程控制

    在Java中,虽然没有直接的原生支持来模拟这些操作,但可以使用并发和多线程类库(如`Thread`和`ExecutorService`)来实现类似的机制,例如通过`wait()`和`notify()`方法模拟阻塞和唤醒,通过`Thread.sleep()`模拟挂...

    java版进程调度模拟器

    本项目"java版进程调度模拟器"旨在通过Java编程语言实现一个模拟进程调度的工具,帮助用户理解和分析各种调度算法的效果。在这个模拟器中,我们可以对进程调度算法有深入的了解,并进行实践操作。 首先,我们要理解...

    操作系统进程调度仿真java程序

    总之,“操作系统进程调度仿真java程序”是一个实用的学习工具,它不仅涵盖了操作系统核心概念,还提供了实践经验,有助于提升对操作系统设计和分析的理解。无论是学生还是教师,都能从中受益匪浅。

    java多线程断点下载

    Java多线程断点下载是网络编程中一个实用的技术,尤其在处理...总的来说,Java多线程断点下载是一个涉及并发编程、文件操作、异常处理等多个领域的综合实践。通过合理设计和优化,我们可以构建出高效且可靠的下载系统。

    到底一个线程占用多少内存

    此外,内存占用还受到其他因素的影响,如全局变量、静态变量等,它们属于进程空间的一部分,所有线程共享。还有,如果线程使用了特定的数据结构或服务(如线程局部存储TLS),这些也会增加额外的内存消耗。 在现代...

    VCHOME_多线程综合技术

    通过学习VCHome_多线程综合技术文档,开发者不仅可以掌握多线程的基本概念,还能了解到如何在VCHome环境中具体应用这些知识,提升程序的并发性能和整体效率。这份文档对于想要深入理解和实践多线程技术的VCHome...

    用户级线程的介绍,怎样实现多线程等等

    线程模型还有其他变体,例如"线程:进程"的比例可以是1:1、M:1(一个进程多个线程)、1:M(一个线程在多个进程中迁移)、M:N(综合模型)。这些模型根据具体的应用场景和系统特性进行选择,以达到最佳的并发性和资源...

    java socket多线程文件传输实例项目

    总结来说,Java Socket多线程文件传输实例项目是一个综合性的实践,涵盖了网络编程、多线程并发控制以及文件I/O等多个核心Java技术。通过这个项目,开发者可以深入理解如何在实际场景中运用这些技术,解决并发文件...

    Java+多线程下载

    在Java中,线程是程序执行的最小单位,一个进程可以包含多个线程。创建线程有两种主要方式:继承`java.lang.Thread`类并重写`run()`方法,或者实现`java.lang.Runnable`接口并提供`run()`方法。然后通过`Thread`类的...

    多线程的实验

    这个“多线程的实验”显然是一份关于多线程编程的学习资料,包括理论说明和实际的代码示例。 首先,多线程的基本概念是关键。在单核处理器中,多线程通过时间片轮转的方式实现并发执行,而在多核处理器上,线程可以...

    java多线程+Socket实现的漂亮QQ

    该项目是一个基于 Java 的即时通讯软件,集成了 Java Swing、Spring、Hibernate、MySQL5、Socket、多线程和 IO 流等多种技术。通过这些技术的综合运用,实现了用户注册登录、聊天记录保存、文件传输等多种功能,并且...

Global site tag (gtag.js) - Google Analytics