zoukankan      html  css  js  c++  java
  • java多线程学习(一)

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

    线程是指进程中的一个运行单元,这个过程中也可调度实体。

    线程与进程的差别:

    (1)地址空间:线程为进程内的一个运行单元。进程至少有一个线程(进程的主线程);进程的全部线程共享进程的地址空间。而进程有自己的独立的地址空间。

    (2)资源拥有:进程是资源分配和拥有的单位。同一个进程内的线程共享进程的资源。

    (3)线程是处理器调度的基本单元,但进程不是。

    (4)进程和线程都能够并发运行。

    通俗的讲就是:

    进程是指一个内存中执行的应用程序,每一个进程都有自己独立的一块内存空间,一个进程能够启动多个线程。

    线程是指进程中的一个执行流程,一个进程中能够执行多个线程。线程总是属于某个进程,进程中的多个线程共享进程的内存。

    二、java中的线程

    在java中,“线程”指两件不同的事情。

    1、java.lang.Thread类的一个实例。

    2、线程的运行。


    java中的线程使用java.lang.Thread类或者实现java.lang.Runnable接口来实现线程的定义,实例化和启动新线程。

    一个Thread类实例仅仅是一个对象,和java中的不论什么其它对象一样,具有变量和方法,生死在堆上。

    java中每一个线程都有一个调用栈,即使不在程序中创建不论什么新的线程,线程也在后台执行着。

    java程序总是从main()方法開始执行,main()方法执行在一个线程内。这个即为主线程。

    每次创建一个新的线程。就会产生一个新的调用栈。

    线程的整体分类为两种:User Thread(用户线程)和Daemon Thread(守护线程)。

    当全部的用户线程运行完成的时候。JVM会自己主动关闭。

    守护线程通常是由操作系统或者用户自己创建的。

    Daemon Thread的作用是为其它线程的执行提供服务的,比方说GC线程,User Thread和Daemon Thread的主要差别在于虚拟机的离开:假设User Thread所有撤离,那么Daemon Thread也就没有为啥线程提供服务了,所以虚拟机退出。

    JRE推断程序是否运行结束的标准是全部的前台运行线程完成了。而无论后台线程的状态。



    版权声明:本文博主原创文章。博客,未经同意不得转载。

  • 相关阅读:
    11月1号笔试题总结
    10月30笔试题总结
    web前端常用单词
    9月13日·碎碎念
    python 匿名函数
    python 二分法查找
    python 递归
    python内置函数
    python 列表生成式
    python 生成器
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4807308.html
Copyright © 2011-2022 走看看