zoukankan      html  css  js  c++  java
  • 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.把实现类实现接口,重写实现类的方法、创建实现类对象合成一步完成。

  • 相关阅读:
    在Linux服务器上添加ip白名单允许ssh登录访问
    crontab + shell脚本实现文件重命名
    mysql数据库提示ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
    附加题2:中文编程的发展角度
    附加题1:实体店的未来存在形式
    第八周作业
    第七周作业
    第六周作业
    第五周作业
    第四周作业
  • 原文地址:https://www.cnblogs.com/blogofzxf/p/14679217.html
Copyright © 2011-2022 走看看