您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
javase第三季学习笔记-进程与线程
发布时间:2017-08-10 15:54:55编辑:雪饮阅读()
什么是进程
• 程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。而进程是程序在处理机上的一次执行过程,它是一个动态的概念。
• 进程是一个具有一定独立功能的程序,一个实体,每一个进程都有它自己的地址空间。
进程:程序从开始运行到结尾,整个过程叫做进程
每个进程具有独立的内存空间
程序运行的个数只能等于或小于cpu的个数
但是平常能看到单核计算机可以跑多个应用,这是因为cpu有一个时间片的概念,cpu跑多个应用时是跑片的,对当前所有程序都给动态切换,每个程序服务很短的时间(时间短到用户基本感觉不到)再次切换到另外一个程序。
多核的时候可以同时多个应用程序分配到时间片
进程的状态
进程执行时的间断性,决定了进程可能具有多种状态。事实上,运行中的进程具有以下三种基本状态。
1)就绪状态(Ready)
2)运行状态(Running) 得到cpu分配的时间片就进入了运行状态
3)阻塞状态(Blocked) 当出现io事件就会阻塞,例如Scanner的用户输入时,若用户迟迟不输入,则即便是cpu已经给分配了时间片,该程序也不会运行一直处于阻塞状态,只有阻塞通了,就会变成就绪状态,等待cpu的调动。
线程
线程实际上是在进程基础之上的进一步划分,一个进程启动之后,里面的若干程序又可以划分成若干个线程。
线程:是进程中的一个执行路径,共享一个内存空间,线程之间可以自由切换,并发执行,一个进程最少有一个线程(单线程程序)
线程实现的两种方式
在Java中如果要想实现多线程的操作,有两种实现方法:
(1)一种是继承Thread类
(2)另外一种是实现Runnable接口
推荐使用Runnable这种方式,因为继承的方式只能继承一个,接口的方式可以实现多个,后者更适合扩展。
代码示例:
package com.vince.thread;
import java.util.Date;
public class ThreadDemo {
public static void main(String[] args) {
//使用自定义线程
MyThread mythread=new MyThread();
//启动线程,真正启动由cpu来决定,所以说此处只是让线程进入就绪状态等待cpu的调度
mythread.start();
//下面是主线程main执行的程序
for (int i = 0; i < 20; i++) {
System.out.println("main+"+i);
}
//Runnable方式使用多线程
MyRunnable myRunnable=new MyRunnable();
Thread thread2=new Thread(myRunnable);
thread2.start();
}
}
class MyThread extends Thread{
@Override
public void run() {
//这里编写你要执行的程序
for(int i=0;i<10;i++){
System.out.println(new Date()+"-"+i);
}
}
}
class MyRunnable implements Runnable{
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println("MyRunnable-"+i);
}
}
}
关键字词:javase,进程与线程