Java 线程 1

来源:互联网 发布:算法工程师 老了 编辑:程序博客网 时间:2024/05/23 14:32

参考:

Java 线程 0 - 前言


下面学习 Java 中进程和线程的概念以及它们之间的关系


主要内容:

  1. 进程
  2. 线程
  3. Java 中进程和线程

进程

参考:

进程

Java进程的理解

进程(process)是程序的基本执行实体,是进行 资源分配和调度基本单位

进程拥有独立的地址空间,包括文本区域(text region),数据区域(data region)和堆栈(stack region

线程

参考:线程

线程是进程中的一个实体,是系统 独立调度和分派最小单位,使得同一个进程可以同时并发处理多个任务,线程也被称为轻量级进程(Lightweight Process

线程除拥有极少的运行中必不可少的资源(拥有自己的堆栈,程序计数器,局部变量)外,和其它线程共享进程的全部资源(进程代码段,公有数据等)

并发性和并行性

并发性:同一时刻只能有一条指令执行,但多个进程指令被快速轮换执行,使得在宏观上具有多个进程同时执行的效果

并行性:同一时刻,有多条指令在多个处理器上同时执行

Java 中线程和进程

参考:Java获取当前进程ID以及所有Java进程的进程ID

Java 环境下,启动一个程序,通常对应于启动一个进程,并且至少会启动一个名称为 main 的线程。测试代码如下:

import java.lang.management.ManagementFactory;import java.lang.management.RuntimeMXBean;/** * Created by zj on 2017/10/16. */public class MyProcess {    public static void main(String[] args) {        MyProcess process = new MyProcess();        System.out.println("pid: " + process.getProcessID());        System.out.println("thread name: " + Thread.currentThread().getName());        System.out.println("thread id: " + Thread.currentThread().getId());    }    public int getProcessID() {        RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();        return Integer.valueOf(runtimeMXBean.getName().split("@")[0]);    }}

这里写图片描述

原创粉丝点击