zoukankan      html  css  js  c++  java
  • 复习八(多线程)

    1.进程:进程是应用程序执行的实例,进程有独立的内存空间和系统资源

    2.线程:线程是cpu调度和分配的基本单位,线程是进程中执行运算的最小单位,可以完成一个独立的顺序控制流程

    一个进程中同时运行了多个线程用来完成不同的工作称之为多线程

    多线程是交替占用cpu资源而并非真正的一起执行

    多线程优点:

        1.充分利用CPU资源

        2.简化编程模型

        3.带来良好的用户体验

    java提供了java.long.Thread类支持线程编程

    主线程:main()方法为主线程入口,产生其他子线程的线程必须最后完成执行因为他执行各种关闭操作

    获取主线程对象:

      Thread  thread=Thread.currentThread();

    创建线程:

        1.继承Thread类

          1.定义一个类继承Thread

          2.重写run方法

          3.使用start()方法启动线程

        2.实现Runnable接口

          Threa thread=new Thread(实现接口的类名);

          thread.start();

    继承Thread 类编写简单可以直接操作线程适用于单线程

    实现Runnable类 避免了单继承的局限性便于共享资源

    线程调度:按照特定的机制为多个线程分配cpu资源的使用权

    线程方法:

        .setPriority(等级) :设置线程优先级 默认为5 数越大优先等级越高

        .sleep(毫秒数) :线程睡眠

        .join() :强制执行

        .yield() :暂停本线程执行其他线程(该线程状态处于就绪状态而不是阻塞状态)

        .interrupt() :中断线程

        .isAlive() :测试线程是否处于活动状态

    线程的礼让只是提供了一种可能,但不一定会实现

    当多个线程操控同一个数据时会造成数据不安全问题,可以使用Synchronized修饰方法控制对类成员的访问,控制资源一次只能一个线程进行操作

    例:

    public Synchronized void 方法名(){
    
    }
              或        
    
    synchronized(同步对象 ,this表示当前对象){
    
    
    }

    当一个线程访问一个同步代码块时其他的所有线程都不能访问,除非代码块不是同步的

                            方法是否同步                 效率              适合的场景
    
       线程安全:                是                       低               多线程共同开发
    
     非线程安全:                否                       高               单线程

    线程池: 因为线程缺乏统一管理占用过多的系统资源,缺乏更多的功能入定时执行定期执行等功能所有产生了线程池

    线程池的好处:

        1.重用存在的线程减少对象创建,消亡的开销

        2.有效的控制最大并发数提高系统资源使用率

        3.定时执行与定期执行

    线程池所在的包:java.util.Concurrent 顶级接口为 Executor 实现线程池的类是 ExecutorService

    java.util.Concurrent.Executors 类提供创建线程池的方法

      new CachcdThreadPool(); 创建一个可缓存的线程池

      new SingleThreadExecutor(); 创建一个单线程的线程池 只有一个线程

      new FixedThreadPool(线程数量);创建一个固定的线程池

      new ScheduledThreadPool(线程数量);创建一个固定长度的线程池可以设置定时来执行

     
  • 相关阅读:
    Binder机制1---Binder原理介绍
    ShareSDK for iOS 2.9.0已经公布
    TCP/IP数据包结构具体解释
    苹果ipa软件包破解笔记
    自己定义对象的监听方式
    强大的PropertyGrid
    matlab中plot使用方法
    fopen 參数具体解释
    leetcode:linked_list_cycle_II
    AssemblyInfo.cs文件的作用
  • 原文地址:https://www.cnblogs.com/HQ0422/p/12006042.html
Copyright © 2011-2022 走看看