Java并发(1):进程和线程

一、进程和线程的概念理解

搞开发是用程序去完成一个功能,这个功能通常由一个进程实现(也能够由多个进程实现,如谷歌浏览器会开多个进程,在windows任务管理器中能够看到,而Eclipse只有一个进程);java

这个进程中不一样的子功能能够使用不一样的线程去完成(如聊天程序中,一个线程发送消息,一个线程接收消息)。编程

PS:线程是一个轻量级的进程。windows

进程是对于操做系统的程序运行单元,线程是对于编程语言的运行单元。(如能够用C或Java开发一个单进程的聊天程序,这个进程能够在操做系统的任务管理器中看到;而不一样的编程语言实现线程的方式不一样,但都能用多线程来完成程序聊天的功能)浏览器

 

二、Java中能够经过Process建立一个操做系统进程,Thread建立一个线程。

PS:进程使用操做系统的任务管理器能够看到;线程的状态在建立改线程的主线程中才能看到。多线程

 

三、进程和线程的状态

操做系统进程状态: 运行态, 就绪态, 等待态( 阻塞态、封锁态、睡眠态)并发

java中线程的状态(java.lang.Thread.State):New/Runnable/Blocked/Wait/Time_wait/Terminated编程语言

[Java并发编程]-线程的六种状态及其状态转换ide

 

四、经过main方法理解线程与进程

Java main方法如何弄清进程问题函数

package com.demo;

public class Test02 {

	public static void main(String[] args) {
		
		Ps p1 = new Ps();
		p1.start();
		
		Ps p2 = new Ps();
		p2.start();
		
		while(true){
			System.out.println(System.currentTimeMillis()+"\t"+Thread.currentThread().getName());
		}
	}
	
}

class Ps extends Thread{
	@Override
	public void run() {
		while(true){
			System.out.println(System.currentTimeMillis()+"\t"+this.getName());
		}
	}
}

在命令行编译执行,在任务管理器能够看到java.exe进程this

而在main线程中,能够获取子线程的运行参数。

PS:执行java com.demo.Test02 运行main函数时,操做系统新建立一个新的JVM并分配资源(内存/cpu等)给该进程,而后JVM加载字节码文件并解释执行(运行main方法);执行过程当中在main线程中又建立两个子线程并启动子线程(在main线程中能够查看子线程的运行参数)。

相关文章
相关标签/搜索