• 第一章 Java多线程技能


    Thread类

    核心方法较多

    如: 线程的启动,

          如何使线程暂停,

          如何使线程停止,

          线程的优先级,

         线程安全相关的问题

    1.1进程和线程的概念及线程的优点

    多线程的优点:可以最大限度地利用CPU的空闲时间来处理其他的任务

    单任务环境(同步)   排队等待

    多任务(多线程)   异步      大大利用CPU

    1.2使用多线程

    一个进程正在运行时至少会有1个线程在运行

    main的线程在执行main()方法中的代码

    public class Test {
      public static void main(String[] args) {
        System.out.println(Thread.currentThread().getName());
    }
    }

           1.2.1继承Thread类

    实现多线程编程的方式:1.继承Thread类,2.实现Runnable接口

    Thread类实现了Runnable接口,之间具有多态关系,不支持多继承,所以为了多继承,可以一边实现一边继承

    class Thread implements Runnable

     1.继承Thread
     2.重写run()方法,写线程要执行的任务的代码

    public class MyThread  extends Thread{
     
       @Override
       public void run() {
        // TODO Auto-generated method stub
        super.run();
    System.out.println("MYthread"); } }

    运行代码类如下

    public class Run {
       public static void main(String[] args) {
        MyThread myThread = new MyThread();
        myThread.start();
        System.out.println("运行结束");
    }
    }

    线程是一个子任务,CPU以不确定的方式或者以随机的时间来调用线程中的run方法,所以就会出现先运行结束再打印MyThread的情况

    注意事项:如果多次调用start(方法会出现异常)


                                                    演示线程的随机性

    Thread类中的Start()方法通知"线程规划期"此线程已经准备就绪,等待调用线程的Run()方法.这个过程其实就是让系统安排一个时间来调用Thread类中的Run()方法,也就是使线程的到运行,启动线程具有异步执行的效果

    如果调用thread.run()就不是异步,而是同步,那么此线程并不交给"线程规划器"来处理,而是由main主线程来调用run()方法,也就是必须等run(),方法中的代码执行完后才可以执行后面的代码

              异步执行效果图

    注意事项:执行Start()方法的顺序不代表启动线程的顺序,线程启动顺序与start()无关


          1.2.1实现Runnable接口

    如果创建的线程已经有父类了 ,则不能继承Thread类,则通过实现Runnable接口

  • 相关阅读:
    pymysql 查询大量数据导致内存使用过高优化方案
    docker-compose文件
    Flask关于request一些方法和属性的整理
    gitignore 文件中忽略项不起作用的解决方法
    Django 时区
    django-apscheduler定时任务
    结队-贪吃蛇游戏-项目进度
    团队-科学计算器-开发环境搭建过程
    《团队-科学计算器-设计文档》
    《结对-贪吃蛇-设计文档》
  • 原文地址:https://www.cnblogs.com/tanlei-sxs/p/9644147.html
Copyright © 2020-2023  润新知