其他分享
首页 > 其他分享> > 多线程部分笔记

多线程部分笔记

作者:互联网

基本概念

多任务:

同时干多件事情,例如:吃饭玩儿手机,上厕所玩儿手机

多线程:

原来是单车道,但是车越来越多了 所以拓宽了到了 变成了多车道 ,不会出现拥堵的情况

image-20210517085932226

进程

在操作系统中运行的程序就是进程 ,音乐 视频等.是系统资源分配的单位

线程

看电视时同时进行的声音,字幕,图像等就是线程,CPU调度和执行的单位

核心概念

image-20210517090439816

 

线程创建

三种实现方式

Thread

注意:线程开启不一定立即执行,由CPU调度

Runnable接口

实现Runnable接口,重写run方法,执行线程需要丢入Runnable接口实现类,调用.start()方法

与Thread对比:image-20210517095526503

Callable接口

好处:可以定义返回值,可以抛出异常

龟兔赛跑案例

public class Race implements Runnable{
   //胜利者
   private static  String winner;
   @Override
   public void run() {
       for (int i = 0; i <= 100; i++) {
           //模拟兔子睡觉
           if (Thread.currentThread().getName().equals("兔子")&&i%10==0){
               try {
                   Thread.sleep(1);
              } catch (InterruptedException e) {
                   e.printStackTrace();
              }
          }
           //判断比赛是否结束
           boolean falg  = gameover(i);
           //如果比赛结束了,就终止程序
           if(falg==true){
               break;
          }

           System.out.println(Thread.currentThread().getName()+"-->跑了"+i+"米");
      }
  }
   //判断是否完成比赛
   private boolean gameover(int steps){
//判断是否有胜利者
       if(winner!=null){//已经存在胜利者了
               return true;
      }{
           if(steps>=100){
               winner = Thread.currentThread().getName();
               System.out.println("winner is "+ winner);
               return true;
          }
      }
       return false;
  }

   public static void main(String[] args) {
       Race race = new Race();
       new Thread(race,"兔子").start();
       new Thread(race,"乌龟").start();
  }
}

静态代理

好处:

 

λ表达式

概念:

为什么要用λ表达式

函数式接口

任何接口,如果只包含唯一一个抽象方法,那他就是一个函数式接口

 

 

 

 

 

 

 

 

 

标签:Runnable,Thread,winner,笔记,start,线程,接口,多线程,部分
来源: https://www.cnblogs.com/wxsstudy/p/14793427.html