Java进程和线程概念及多线程的创建
1.并发与并行
学习进程与线程首先要了解什么是并发和并行?
并发:指两个或多个事件在同一个时间段内发生(多线程操作同一个资源)
并行:指两个或多个事件在同一时刻发生(多个线程同时执行)
举例:
并发:CPU单核,模拟出多线程,天下武功,唯快不破,快速交替
并行:Cpu多核,多个线程同时执行
2.进程和线程的概念
进程:一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可
行同时运行多个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位;
系统运行一个程序即是一个进程从创建、运行到消亡的过程
线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一
个线程.一个进程是可以有多个线程的,这个应用程序也可以称之为多线程程序
简而言之:一个程序运行后至少有一个进程,一个进程中可以包含线程
举例:QQ.exe就是一个进程,打开QQ后发送功能(…)就是线程
3.多线程
如果使用单线程,那么程序就必须等待这些操作执行完成之后才能执行其他操作,
显然不符合我么现在的快速的节奏.使用多线程,可以在将耗时任务放在后台继续执行时,
同时执行其他操作。
主要的优点:.
可以提高程序的效率
缺点:
使用太多线程,是很耗系统资源,因为线程需要开辟内存。更多线程需要更多内存。
影响影系统性能,因为操作系统需要在线程之间来回切换.
总结:多线程是异步的,但这不代表多线程真的是几个线程是在同时进行,实际上
是系统不断地在各个线程之间来回的切换(因为系统切换的速度非常的快,所以给我们
在同时运行的错觉)
4.创建多线程的两种方法(常用):
1、继承Thread类,重写run()方法
//方式1
package cn.itcats.thread.Test1;
public class Demo1 extends Thread{
//重写的是父类Thread的run()
public void run() {
System.out.println(getName()+"is running...");
}
public static void main(String[] args) {
Demo1 demo1 = new Demo1();
Demo1 demo2 = new Demo1();
demo1.start();
demo2.start();
}
}
2、实现Runnable接口,重写run()
package cn.itcats.thread.Test1;
public class Demo2 implements Runnable{
//重写的是Runnable接口的run()
public void run() {
System.out.println("implements Runnable is running");
}
public static void main(String[] args) {
Thread thread1 = new Thread(new Demo2());
Thread thread2 = new Thread(new Demo2());
thread1.start();
thread2.start();
}
}