java学习day30---(多线程基本概念)

一、多线程基本概念

进程线程概念

软件:对于操作系统来说,当一个软件启动,会有一个或者多个程序进入到内存中,进入到内存中的程序就是一个进程

例如:打开360安全卫士,就会打开360安全模块、360安全组件、360服务组件、360软件管家等程序,都会进入到CPU的内存中

线程通道:一个进程有多个代码块,不同的功能就执行不同的代码块,在执行代码块的时候,就会开启线程通道连接CPU中的逻辑处理器,执行一个功能的代码块;这个逻辑处理器与多个代码块开通线程通道,在这些代码中来回切换,就达到同时执行多个功能的画面

多线程:如果一个进程,允许开启多个线程通道,最终体现的效果是多个功能在同时执行,这个程序就是多线程程序;如果一个进程,不允许开始多个线程通道,一个进程只有一个线程,这个进程就是单线程程序

逻辑处理器是抢占式调度,哪个线程抢到了处理器是随机的,因此线程越多的进程,抢到的机会就越大,执行的效率就越高

每一个线程都是一个独立的栈空间

线程的java实现

一个线程类,要继承Thread类,这个类就是线程类

重写Thread类的run()的方法

在该类中,提供线程任务(代码块)

public class MyThread extends Thread {    
   @Override    
   public void run() {
       super.run();    
  }
}

.start()开启这个线程对象

如果使用对象调用.run()没有开启线程

这种方式是把线程对象和线程任务绑在一起的,是耦合的

start()与run()的区别

run方法是线程对象中的线程任务,是线程开启后需要执行的代码

start方法是开启一个线程


另一种解耦的方式

创建一个类,这个类只作为线程任务的存在,传统方式创建:

public class Myrunnable implements Runnable{
     @Override
   public void run() {    
  }
}
//创建一个类,实现Runnable接口
  public static void main(String[] args) {
       Myrunnable myRunnable = new Myrunnable();
       Thread thread = new Thread(myRunnable);
       thread.start();
  }

Runnable接口中,只有一个run()重写方法

因此可以使用匿名内部类和lambda写法

 //匿名内部类
Thread thread = new Thread(new Runnable() {
           @Override
           public void run() {
               System.out.println("开启线程!");
          }
      });  


//lambda
Thread thread = new Thread(()->System.out.println("开启线程"));
       thread.start();

 

posted @ 2021-08-10 08:38  墨衣i  阅读(41)  评论(0)    收藏  举报