`
yeaijun
  • 浏览: 19006 次
  • 性别: 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  

分享到:
评论

相关推荐

    2进程和线程.xmind

    是OS进行资源分配和调度的基本单位】 进程映像(进程实体) 【静态的】 PCB【进程存在的唯一标志】 进程的管理者 (OS)所需要的数据都在PCB中 进程描述信息 进程标识符【PID】 用户标识符【UID】 ...

    线程的基本概念、线程类、任务类、线程优先级、sleep()方法、yield()方法、join方法、interrupt()方法

    线程的基本概念、线程类、任务类、线程优先级、sleep()方法(休眠)、yield()方法(礼让)、join方法(合并)、interrupt()方法(中断),线程的生命周期 线程 与 进程 的关系:**有一个进程中至少包含一个线程 **...

    操作系统进程详解以及练习题

    第2章 进程和线程的管理 2.1 基本点、重点和难点 2.2 例题解析

    掌握Android中的进程和线程

     进程和线程的基本概念  当一个应用程序开始运行它的第一个组件时,Android会为它启动一个Linux进程,并在其中执行一个单一的线程。默认情况下,应用程序所有的组件均在这个进程的这个线程中运行。然而,你也...

    第2章 进程与线程1

    背景知识进程进程与线程基本与线程基本概念概念多进程编程多进程编程多进程编程多进程编程多线程编程多线程编程实验内容实验内容实验内容实验内容创建进程创建进程线程共享

    Linux中进程和线程的对比与区别

    在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位。 (2)线程和进程的区别在于,子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每...

    进程模拟及进程调度程序

    进程模拟及进程调度程序,进程模拟及进程调度程序,进程模拟及进程调度程序,进程模拟及进程调度程序

    操作形同实验——进程同步和互斥

    (1) 通过编写程序实现进程同步和互斥,掌握有关进程(线程)同步与互斥的原理,以及解决进程(线程)同步和互斥的算法,从而进一步巩固进程(线程)同步和互斥等有关的内容。 (2) 了解Windows2000/XP中多线程的...

    区分python中的进程与线程

    今天整理的文章是给大家梳理Python的进程与线程的区别,没什么代码,希望大家能清楚知道他们的区别,什么情况用线程,什么情况用进程做到心中有数,希望大家能熟练掌握. 进程的基本概念 概念 进程就是一个程序在一个...

    CH11-C#进程与线程.md

    1. 理解进程和线程的基本概念 2. C# Process:进程类 3. C# Thread:线程及与线程有关的类 4. C# ThreadStart:创建无参数无返回的线程 5. ParameterizedThreadStart:创建带参数线程 6. C# Priority:多线程...

    linux多线程开发区别与window

    Linux 平台上的多线程程序开发相对应其他平台(比如 Windows)的多线程 API 有一些细微和隐晦的差别,不注意这些 Linux 上的一些开发陷阱,常常会导致程序问题不穷,死锁不断。本文中我们从 5 个方面总结出 Linux 多...

    线程的部分概念,以及线程的部分知识

    线程的一些基本概念 如什么是线程 什么是进程 并行和并发 一、创建线程 二、设置线程的名称 三、线程名称的获取 四、线程安全问题 五、线程同步 六、线程的状态

    线程和进程的区别及Python代码实例

    在程序猿的世界中,线程和进程是一个很重要的概念,很多人经常弄不清线程和进程到底是什么,有什么区别,本文试图来解释一下线程和进程。首先来看一下概念: 进程(英语:process),是计算机中已运行程序的实体。...

    Unity基础知识——进程、线程、协程入门

    一、基本概念 首先在学习之前,我们要弄懂什么是进程,什么是线程,什么是携程。 简单来说,进程就是你能在任务管理器里看到的内容。包括 这些都是进程。而每一个进程可能还会有一个或多个线程。线程可以简单地理解...

    java多线程之线程,进程和Synchronized概念初解

    主要介绍了java多线程之线程,进程和Synchronized概念初解,涉及进程与线程的简单概念,实现多线程的方式,线程安全问题,synchronized修饰符等相关内容,具有一定借鉴价值,需要的朋友可以参考下。

    关于进程通信 论文

    关于进程通信 线程基本概念 进程的状态转换

    操作系统实验报告 作业调度

    操作系统实验 作业调度 详细具体 附流程图 实验结果分析 图

    Linux下进程及多线程编程

    在Linux下进行多线程编程时,首先要创建线程,然后,要掌握线程的结束方法,线程的参数传递及线程的标识等基本概念,在此基础上,熟悉线程互斥锁的概念及其编程。

    Java线程详解.ppt

    2:进程同时又是一个可独立调度和分派的基本单位, 这两个基本属性使之能够独立运行,也能够并发运行。但是在并发运行的时候,系统还需要执行一系列操作: 1、需要创建进程,并为之分配其所必需的资源。 2、撤销...

Global site tag (gtag.js) - Google Analytics