进程和线程概念及多线程的创建

进程和线程概念及多线程的创建

1.并发与并行

学习进程与线程首先要了解什么是并发和并行?
并发:指两个或多个事件在同一个时间段内发生
并行:指两个或多个事件在同一时刻发生(同时发生)

2.进程和线程的概念

进程:一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可
     行同时运行多个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位;
     系统运行一个程序即是一个进程从创建、运行到消亡的过程
线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一
      个线程.一个进程是可以有多个线程的,这个应用程序也可以称之为多线程程序
简而言之:一个程序运行后至少有一个进程,一个进程中可以包含线程

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();
  }
}

猜你喜欢

转载自blog.csdn.net/weixin_49092628/article/details/110237226