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

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

线程与进程的差别:

(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推断程序是否运行结束的标准是全部的前台运行线程完成了。而无论后台线程的状态。

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

java多线程学习(一)的更多相关文章

  1. Java多线程学习笔记

    进程:正在执行中的程序,其实是应用程序在内存中运行的那片空间.(只负责空间分配) 线程:进程中的一个执行单元,负责进程汇总的程序的运行,一个进程当中至少要有一个线程. 多线程:一个进程中时可以有多个线 ...

  2. Java多线程学习(转载)

    Java多线程学习(转载) 时间:2015-03-14 13:53:14      阅读:137413      评论:4      收藏:3      [点我收藏+] 转载 :http://blog ...

  3. java多线程学习笔记——详细

    一.线程类  1.新建状态(New):新创建了一个线程对象.        2.就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法.该状态的线程位于可运行线程池中, ...

  4. 【转】Java多线程学习

    来源:http://www.cnblogs.com/samzeng/p/3546084.html Java多线程学习总结--线程概述及创建线程的方式(1) 在Java开发中,多线程是很常用的,用得好的 ...

  5. JAVA多线程学习笔记(1)

    JAVA多线程学习笔记(1) 由于笔者使用markdown格式书写,后续copy到blog可能存在格式不美观的问题,本文的.mk文件已经上传到个人的github,会进行同步更新.github传送门 一 ...

  6. Java多线程学习(六)Lock锁的使用

    系列文章传送门: Java多线程学习(二)synchronized关键字(1) Java多线程学习(二)synchronized关键字(2) Java多线程学习(三)volatile关键字 Java多 ...

  7. Java多线程学习(五)线程间通信知识点补充

    系列文章传送门: Java多线程学习(二)synchronized关键字(1) Java多线程学习(二)synchronized关键字(2) Java多线程学习(三)volatile关键字 Java多 ...

  8. Java多线程学习(四)等待/通知(wait/notify)机制

    转载请备注地址:https://blog.csdn.net/qq_34337272/article/details/79690279 系列文章传送门: Java多线程学习(一)Java多线程入门 Ja ...

  9. Java多线程学习(三)volatile关键字

    转载请备注地址:https://blog.csdn.net/qq_34337272/article/details/79680693 系列文章传送门: Java多线程学习(一)Java多线程入门 Ja ...

  10. Java多线程学习(二)synchronized关键字(2)

    转载请备注地址:https://blog.csdn.net/qq_34337272/article/details/79670775 系列文章传送门: Java多线程学习(一)Java多线程入门 Ja ...

随机推荐

  1. RedGate 工具SQLTEST 1.0.15.1

    原文:RedGate 工具SQLTEST 1.0.15.1 RedGate 工具SQLTEST 1.0.15.1 SQL TEST1.0.15.1的破解可以参考这篇文章:http://www.cnbl ...

  2. ViewPager空指针错误,android.support.v4.view.ViewPager.onSaveInstanceState

    support.v4 包为我们提供了一个非常实用的滑动控件ViewPager,在使用ViewPager时有一个需要注意的地方: 即: android.support.v4.view.ViewPager ...

  3. <a href='javascript:void(0)' onclick='my()'></a>

  4. Mac下改动Android Studio 所用的JDK版本号

    Mac下改动Android Studio 所用的JDK版本号 @author ASCE1885 近期项目从Eclipse+Ant构建模式转移到了Android Studio+Gradle构建模式.自然 ...

  5. Linux下安装Oracle11g服务器(转)

    安装环境 Linux服务器:SuSe10 sp2 64位 Oracle服务器:Oracle11gR2 64位 系统要求 Linux安装Oracle系统要求 系统要求 说明 内存 必须高于1G的物理内存 ...

  6. Hello World! 2010年山东省第一届ACM大学生程序设计竞赛

    Hello World! Time Limit: 1000MS Memory limit: 65536K 题目描述 We know that Ivan gives Saya three problem ...

  7. PC2日记——坑爹的第一天2014/08/28

    我不想安慰自己说今天是因为第一次将pc2用于实际的比赛经验不足而导致的今天出现种种问题,我想说的是自从我開始干后台我所做的每一件事都是第一次,所以这绝对不是让自己免去责怪的理由:我想说的是假设我今天是 ...

  8. .Net中获取打印机的相关信息

    原文:.Net中获取打印机的相关信息 新项目中牵涉到对打印机的一些操作,最重要的莫过于获取打印机的状态,IP等信息,代码量不大,但是也是自己花了一点时间总结出来的,希望能帮助需要的朋友. Printe ...

  9. Java没有源代码的同步集合~

    存档~~~~ Synchronized,volatile,lock 锁定->[就绪队列,阻塞队列] 第一个是jvm等级达到. 与volatile所不同的是,后者不能从工作存储器写回到主存储器. ...

  10. 无奈而又苦逼的二分版本号回退法定位新引入的bug!!!

    昨天測试人员和开发者都发现, 某新版本号有严重的bug.  群里已经開始嚷嚷了, 但没有谁知道是谁引入的问题.本来呢, 这个问题不应该是由我去定位, 但主管让我帮定位一下, 毕竟时间太紧急, 必须尽快 ...