`
yeaijun
  • 浏览: 19566 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

进程和线程的区别基本概念

阅读更多

一、操作系统中线程和进程的概念 

现在的操作系统是多任务操作系统。多线程是实现多任务的一种方式。 

进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程。比如在Windows系统中,一个运行的exe就是一个进程。 

线程是指进程中的一个执行流程,一个进程中可以运行多个线程。比如java.exe进程中可以运行很多线程。线程总是属于某个进程,进程中的多个线程共享进程的内存。 

“同时”执行是人的感觉,在线程之间实际上轮换执行。 

二、Java中的线程
 

在Java中,“线程”指两件不同的事情: 
1、java.lang.Thread类的一个实例; 
2、线程的执行。 

使用java.lang.Thread类或者java.lang.Runnable接口编写代码来定义、实例化和启动新线程。 

一个Thread类实例只是一个对象,像Java中的任何其他对象一样,具有变量和方法,生死于堆上。 

Java中,每个线程都有一个调用栈,即使不在程序中创建任何新的线程,线程也在后台运行着。 

一个Java应用总是从main()方法开始运行,mian()方法运行在一个线程内,它被称为主线程。 

一旦创建一个新的线程,就产生一个新的调用栈。 

线程总体分两类:用户线程和守候线程。 

当所有用户线程执行完毕的时候,JVM自动关闭。但是守候线程却不独立于JVM,守候线程一般是由操作系统或者用户自己创建的。 

三、java何时会创建新的线程? 
    答:java中所有的线程都必须通过new Thread()或实现Runnable,显式的创建新线程。调用其他类的方法、访问字段等操作都是在同一个线程里进行的,不会创建新的线程。 
    可以分为两种情况: 
              1、由JVM自动创建的,如:垃圾收集线程--启动时创建 
              2、由用户创建的。

测试代码: 

 

  1. public class TClassMain{  
  2.     public static void main(String[] args){  
  3.           String threadName = Thread.currentThread().getName();  
  4.           System.out.println("TClassMain类所属线程:"+threadName);  
  5.             TClass1 t1 = new TClass1();  
  6.             //t1.display();  
  7.             t1.start();  
  8.     }  
  9. }  
  10.   
  11. class TClass1 extends Thread{  
  12.     /*public void display(){ 
  13.                 String threadName = Thread.currentThread().getName(); 
  14.             System.out.println("TClass1类所属线程:"+threadName); 
  15.     }   */  
  16.     public void run(){  
  17.             String threadName = Thread.currentThread().getName();  
  18.           System.out.println("TClass1类所属线程:"+threadName);  
  19.     }  
  20. }  
输出结果: 
       
  1. D:\test>java TClassMain  
  2. TClassMain类所属线程:main  
  3. TClass1类所属线程:Thread-0  

分享到:
评论

相关推荐

    进程和线程的主要区别

    在计算机科学中,进程和线程是两个基本概念,它们都是操作系统中非常重要的资源管理方式。进程是系统进行资源分配和调度的一个独立单位,拥有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响。...

    进程与线程的生动形象理解

    本文旨在通过一个生动的类比来帮助读者更好地理解进程与线程的基本概念及其差异,并进一步探讨它们在实际应用中的联系与区别。 #### 二、生动形象的类比 为了更好地理解进程与线程,我们可以将计算机比喻成一座工厂...

    进程和线程之间的关系

    在计算机科学领域中,进程和线程是两个非常重要的概念,它们之间既有联系又有区别。对于初学者来说,理解进程与线程的关系至关重要,因为这有助于深入掌握操作系统的基本原理及应用。下面将详细阐述进程与线程之间的...

    JAVA线程与进程的区别

    JAVA语言中,线程(Thread)和进程(Process)是两个基本概念,它们都是操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。但是,它们之间有着本质的区别。 首先,进程是操作系统...

    进程和线程的区别与联系

    进程和线程是计算机操作系统中的两个基本概念,它们在程序执行和系统资源管理中起着至关重要的作用。本文将深入探讨这两个概念的区别、联系以及在Java环境中的具体应用。 首先,程序是静态的代码集合,它是一组指令...

    进程和线程详解

    进程和线程是计算机操作系统中的两个基本概念,对于任何软件开发者,尤其是系统级或服务器端开发者来说,理解和掌握它们至关重要。下面将详细解释这两个概念,以及它们在实际应用中的作用。 首先,我们来理解“进程...

    进程线程进程线程进程线程

    进程线程进程线程进程线程

    线程和进程的区别.txt

    #### 进程与线程的基本概念 在现代操作系统(如Windows、UNIX等)中,进程(Process)和线程(Thread)是两个非常重要的概念,它们对于理解和设计多任务操作系统及其应用程序至关重要。进程是操作系统进行资源分配...

    线程,进程,程序的区别

    程序、进程和线程是操作系统中的基础概念,它们在计算机科学中有不同的含义,对于理解计算机如何运行至关重要。 程序(Program)是指一组按照特定顺序排列的计算机指令的集合,目的是执行特定的任务或解决特定的...

    最清楚的进程线程,进程和线程对比

    线程基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器、一组寄存器和栈),但它可与同属一个进程的其他线程共享进程所拥有的全部资源。线程的存在使得操作系统可以同时调度同一进程中的多个...

    Linux进程和线程的基本编程、通讯和例程1

    本文将深入探讨Linux操作系统中的进程和线程的基本概念、编程、通信以及调试方法。首先,我们要明确进程和线程之间的区别。在Linux中,程序是一组静态的代码,而进程是这些代码在内存中的动态执行实例。一个程序可以...

    进程与线程的一个简单解释

    了解和掌握进程与线程的区别和交互机制,对于编写高效的多线程程序至关重要。通过互斥锁和信号量等同步工具,我们可以有效地控制线程的并发访问,确保程序的正确性和性能。在实际开发中,合理地使用进程和线程,结合...

    c++进程与线程

    进程和线程是操作系统中的基本概念,对于理解和优化软件性能至关重要。让我们深入探讨这两个概念以及它们在C++编程中的应用。 **1. 进程** 进程是计算机中正在执行的程序的一个实例,每个进程都有自己的独立内存...

    Java 的多线程,程序、进程和线程的概念31

    首先,我们来了解一下程序、进程和线程的基础概念: 1. **程序**:程序是一组有序的指令,它们定义了计算机执行特定任务的逻辑步骤。这些指令通常以源代码的形式存在于文本文件中,由编程语言编写而成。 2. **进程...

    C#进程和线程资料集锦

    "C#进程和线程资料集锦"这一主题涵盖了进程与线程的基本概念、管理和同步技术,是C#开发者必备的知识库。 **进程与线程** 1. **进程**:进程是操作系统资源分配的基本单位,每个运行的应用程序都有一个独立的进程。...

    c语言多进程多线程编程

    在计算机科学中,多进程和多线程是两种并发执行的方式,它们允许程序在同一时间处理多个任务,从而提高系统的效率和响应性。C语言作为一门底层且强大的编程语言,提供了丰富的系统调用接口来实现多进程和多线程编程...

    进程与线程的管理 .PPT 进程、线程和优先级

    而线程则是执行的基本单元,是进程中独立的执行路径,每个进程至少有一个主线程,用于启动和执行进程的主要任务。 线程的优先级是调度的重要依据,Windows系统中,线程被分为32个优先级等级,从0到31,0表示最低...

    delphi进程和线程

    总的来说,理解和掌握进程与线程的概念,以及在Delphi中如何实现多线程,对于开发高效、稳定的程序至关重要。在实际项目中,根据需求选择合适的线程模型,同时注意线程安全和资源管理,可以极大地提高软件的性能和...

Global site tag (gtag.js) - Google Analytics