进程和线程的概述
来源:互联网 发布:博客绑定域名 编辑:程序博客网 时间:2024/05/18 19:21
通过任务管理器我们就看到了进程的存在。
而通过观察,我们发现只有运行的程序才会出现进程。
进程:就是正在运行的程序。
进程是系统进行资源分配和调用的独立单位。每一个进程都有它自己的内存空间和系统资源。
多进程有什么意义呢?
单进程的计算机只能做一件事情,而我们现在的计算机都可以做多件事情。
举例:一边玩游戏(游戏进程),一边听音乐(音乐进程)。
也就是说现在的计算机都是支持多进程的,可以在一个时间段内执行多个任务。
并且呢,可以提高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();
}
}
- 进程和线程的概述
- 线程和进程概述
- android中进程和线程的概述
- Java进程和线程的概述
- 多线程-进程和线程的概述
- 进程和线程概述、区别及联系
- python入门(三十五):线程和进程概述
- 进程,线程,事物概述
- 线程进程概述举例
- 线程、进程概述-iOS
- 01 线程、进程概述
- 进程与线程概述
- 线程与进程概述
- 多线程-进程和线程概述以及如何使用多线程
- 进程通信、线程同步 概述
- Linux进程与线程概述
- LINUX进程与线程概述
- Linux进程与线程概述
- PHP中获取文件扩展名的N种方法
- linux sort,uniq,cut,wc命令详解集合
- SOFA的安装
- SpringMVC 详解
- UI day 1 UIView
- 进程和线程的概述
- miniui·琐碎
- redis服务启动关闭以及其他命令实践
- POJ 2823 Sliding Windows
- slub分配器
- 和其他app进行交互
- bp神经网络训练例子
- python的不可变量和可变量
- hibernate如何使用小demo