java知识学习37-多线程

多线程原理:同一时间内,CPU只能处理1条线程,只有1条线程在工作(执行);多线程并发(同时)执行,其实是CPU快速地在多条线程之间调度(切换)。如果CPU调度线程的时间足够快,就造成了多线程并发执行的假象。当然若是多个CPU的话就可以同时执行多个线程了。

 

  如下图,在main方法(主线程)中创建一个子线程,然后调用start方法JVM虚拟机会执行子线程中的run方法,而主线程继续执行下面的循环方法,即主线程和子线程相当于同时在并行。一个CPU每次只运行一个线程,所以这两个线程其实是每次随机被调用执行。

  

  下图是从内存角度解释多线程的运行方式。

  

常用方法:

  

  获取线程名称:

  

  设置线程名称:

  

 

 

多线程的使用:两种方式

  方式1:

    1、创建一个子类继承多线程类Thread,然后在该子类中重写run方法实现我们想要的操作;

    2、在调用类中创建1中的子类对象,然后调用子类对象的start方法,JVM虚拟机会调用被重写的run方法实现多线程效果。

  方式2:推荐使用第二种方式

    1、创建一个Runnable接口的实现类;

    2、在实现类中重写Runnable接口的run方法,设置线程任务;

    3、创建一个Runnable接口的实现类对象;

    4、创建一个Thread类对象,其构造方法中传入Runnable接口的实现类对象;

    5、调用Thread类对象的start方法,开启新线程执行run方法

    

 

匿名内部类:没有名字的,写在其他类内部的类。其作用就是简化代码。

  格式:new 父类/接口() { 重写父类/接口中的方法 }

  1.把子类继承父类,重写父类的方法、创建子类对象合成一步完成。

  2.把实现类实现接口,重写实现类的方法、创建实现类对象合成一步完成。

 

posted @ 2021-04-20 21:47  那种意境  阅读(100)  评论(0编辑  收藏  举报