进程:正在执行中的程序,其实是应用程序在内存中的那片空间。提供空间分配(如QQ)
线程:进程中的一个执行单元,负责进程中的程序执行(从哪到哪),一个进程中至少有一个线程。一个进程中多个执行单元——多线程(如qq 中的游戏/聊天等不同的功能)
-
Java虚拟机允许应用程序同时执行多个执行线程。
程序启动多线程,有什么用?
可以实现多部分程序同时执行,专业术语----并发执行
多线程的运行原理:
1. 内存是在存储数据,硬盘是在计算
2. 内存是临时存储,关机后就没有了,其实在计算结束之后就没有了—临时计算区域-提高运行效率,内存是寻址。硬盘是持久化存储关机之后还有,硬盘是寻道。寻址比寻道更快。数据有硬盘中调到内存中由中央处理器(CPU)来处理
3. CPU在程序运行时做什么?
1. CPU在处理线程
2. CPU在某一时刻不能同时处理多个程序
但是当我们在使用电脑是的确是同时打开了多个窗口,此时实际上CPU是在做线程的瞬间切换,这种速度是我们无法体会到的,CPU的瞬间切换导致我们以为是多个程序在同时进行。
3. 多线程开多了,会导致运行效率降低。多切换导致效率并没有更快。程序/线程太多 CPU忙不过来,执行某个执行程序不会马上反应,但是他会在CPU的任务处理队列
里面(假死机。真死机就要关机清理内存重启了)
总结:多线程的合理使用可以合理的充分的利用CPU的资源,但如果线程过多会导致CPU处理不过来导致性能降低
主线程的运行方式:

<strong>package Thread;
class Demo{
private String name;
Demo(String name){
this.name=name;
}
void show(){
for(int i=1;i<=20;i++){
System.out.println("name : "+name+" "+i);
}
}
}
public class ThreadDemo1 {
public static void main(String[] args){
Demo D1 = new Demo("Liu");
Demo D2 = new Demo("Li");
D1.show();
D2.show();
}
}
/*
<span style="color:#ff0000">在之前的代码中,JVM启动之后,必然执行的路径(线程)是从main 方法开始的。一直执行到main方法结束。这个线程被称为主线程
当主线程爱这个程序执行时,如果遇到循环或者其他代码导致程序在指定位置停留的时间过长,无法执行到下面的程序
可以实现一个主线程负责执行其中一个循环,由其他的线程执行其他的代码
实现多部分同时执行
这就是多线程可以解决的问题</span>
*/</strong>
//接下来讨论如何创建线程

被折叠的 条评论
为什么被折叠?



