搞开发是用程序去完成一个功能,这个功能通常由一个进程实现(也能够由多个进程实现,如谷歌浏览器会开多个进程,在windows任务管理器中能够看到,而Eclipse只有一个进程);java
这个进程中不一样的子功能能够使用不一样的线程去完成(如聊天程序中,一个线程发送消息,一个线程接收消息)。编程
PS:线程是一个轻量级的进程。windows
进程是对于操做系统的程序运行单元,线程是对于编程语言的运行单元。(如能够用C或Java开发一个单进程的聊天程序,这个进程能够在操做系统的任务管理器中看到;而不一样的编程语言实现线程的方式不一样,但都能用多线程来完成程序聊天的功能)浏览器
PS:进程使用操做系统的任务管理器能够看到;线程的状态在建立改线程的主线程中才能看到。多线程
操做系统进程状态: 运行态, 就绪态, 等待态( 阻塞态、封锁态、睡眠态)并发
java中线程的状态(java.lang.Thread.State):New/Runnable/Blocked/Wait/Time_wait/Terminated编程语言
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线程中能够查看子线程的运行参数)。