您的位置:首页 > 其它

进程和线程的概述

2015-12-21 20:45 211 查看
什么是进程?

通过任务管理器我们就看到了进程的存在。

而通过观察,我们发现只有运行的程序才会出现进程。

进程:就是正在运行的程序。

进程是系统进行资源分配和调用的独立单位。每一个进程都有它自己的内存空间和系统资源。

多进程有什么意义呢?

单进程的计算机只能做一件事情,而我们现在的计算机都可以做多件事情。

举例:一边玩游戏(游戏进程),一边听音乐(音乐进程)。

也就是说现在的计算机都是支持多进程的,可以在一个时间段内执行多个任务。

并且呢,可以提高CPU的使用率。

问题:

一边玩游戏,一边听音乐是同时进行的吗?

不是。因为单CPU在某一个时间点上只能做一件事情。

而我们在玩游戏,或者听音乐的时候,是CPU在做着程序间的高效切换让我们觉得是同时进行的。

什么是线程呢?

在同一个进程内又可以执行多个任务,而这每一个任务我就可以看出是一个线程。

线程:是程序的执行单元,执行路径。是程序使用CPU的最基本单位。

单线程:如果程序只有一条执行路径。

多线程:如果程序有多条执行路径。

多线程有什么意义呢?

多线程的存在,不是提高程序的执行速度。其实是为了提高应用程序的使用率。

程序的执行其实都是在抢CPU的资源,CPU的执行权。

多个进程是在抢这个资源,而其中的某一个进程如果执行路径比较多,就会有更高的几率抢到CPU的执行权。

我们是不敢保证哪一个线程能够在哪个时刻抢到,所以线程的执行有随机性。

实现多线程:

*

* 方式1继承Thread类

* 步骤

* A:自定义类MyThread继承Thread类。

* B:MyThread类里面重写run()?

* 为什么是run()方法呢?

* C:创建对象

* D:启动线程

*/

public class MyThreadDemo {

public static void main(String[] args) {

// 创建线程对象

// MyThread my = new MyThread();

// // 启动线程

// my.run();

// my.run();

// 调用run()方法为什么是单线程的呢?

// 因为run()方法直接调用其实就相当于普通的方法调用,所以你看到的是单线程的效果

// 要想看到多线程的效果,就必须说说另一个方法:start()

// 面试题:run()和start()的区别?

// run():仅仅是封装被线程执行的代码,直接调用是普通方法

// start():首先启动了线程,然后再由jvm去调用该线程的run()方法。

// MyThread my = new MyThread();

// my.start();

// // IllegalThreadStateException:非法的线程状态异常

// // 为什么呢?因为这个相当于是my线程被调用了两次。而不是两个线程启动。

// my.start();

// 创建两个线程对象

MyThread my1 = new MyThread();

MyThread my2 = new MyThread();

my1.start();

my2.start();

}

}

/*

* 方式2:实现Runnable接口


* 步骤:

* A:自定义类MyRunnable实现Runnable接口

* B:重写run()方法

* C:创建MyRunnable类的对象

* D:创建Thread类的对象,并把C步骤的对象作为构造参数传递

*/

public class MyRunnableDemo {

public static void main(String[] args) {

// 创建MyRunnable类的对象

MyRunnable my = new MyRunnable();

// 创建Thread类的对象,并把C步骤的对象作为构造参数传递

// Thread(Runnable target)

// Thread t1 = new Thread(my);

// Thread t2 = new Thread(my);

// t1.setName("张三");

// t2.setName("李四");

// Thread(Runnable target, String name)

Thread t1 = new Thread(my, "张三");

Thread t2 = new Thread(my, "李四");

t1.start();

t2.start();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: