zoukankan      html  css  js  c++  java
  • 多线程01_基础

    线程和进程

    简单入门

    多线程

    1.创建多线程

    • 继承Thread类
    • 实现Runnable接口
    • 实现Callable接口(位于concurrent并发包中,重写Call()方法并交给FutureTask类来执行,Call()方法可以有返回值,可以抛异常,get()方法可以拿到返回值,该方法是阻塞的)
      推荐实现接口方式,因为一是避免Java单继承,二是面向接口编程

    2.线程常用方法

    • 设置线程名
      • 通过线程构造器设置
      • 调用setName方法修改
    • 设置守护线程
      守护线程即服务线程,为其他线程服务,比如GC线程;当其他线程执行完,虚拟机退出时,守护线程也随之结束
      • 使用setDaemon(boolean on)来开启
      • 注意的地方
        • 先设置为守护线程再启动,否则报异常IllegalThreaStateException()
        • 守护线程中产生的线程也是守护线程
        • 使用守护线程不要访问共享资源,比如数据库、文件等,因为不知道它什么时候会结束
    • 设置线程优先级
      仅仅是增大线程获取cpu的几率,Java提供的优先级默认是5,最低是1,最高是10
      • 使用setPriority方法设置
    • 中断进程
      • 正常进程调用interrupt方法仅仅是设置了一个中断标志为true,线程继续执行不受影响
      • 阻塞状态的线程调用interrupt方法,那么会抛出中断异常(用户捕捉到中断异常可以进行自定义操作),设置中断标志位为false,同时该线程会退出阻塞
      • isInterrupted方法可以返回当前中断标志,用户可以用其监听中断状态while(!Thread.currentThread.isInterrupted()){},当中断时执行中断处理代码
      • interrupted方法返回当前中断标志,同时重置中断标志为false
    • 阻塞方法
      • 线程睡眠sleep方法和线程让步yeild方法
        • 两者相似,sleep方法可以设置线程暂停时间,同时让出CPU,进入不可运行状态;让其他线程有机会执行,但是不释放锁,即其他线程不能访问共享数据
        • yeild方法也是使线程暂停,同时让出CPU,但是它仍处于可运行状态;它是让相同优先级的线程有机会执行,如果检测没有同优先级的线程,它会继续执行原来的线程,它也不释放锁
      • 线程同步join方法
        • join方法是暂停当前线程的执行,而等待指定线程执行完毕或者执行一定时间
        • 参数可选填时间,表示指定线程执行时间
        • 必须在start之后使用才有意义
        • join使线程的并发执行变成串行执行
        • join使用了线程的wait方法来实现同步,如果A线程内调用B线程的join,就是A当线程调用了B线程的wait方法,A线程进入阻塞状态,直到B线程执行完

    3.线程生命周期

    4.简单代码测试

    测试一

  • 相关阅读:
    iOS开发者程序许可协议
    IOS升级之 Objective-c新特性
    ios 性能优化之自动化UI测试
    ios 性能优化之CPU性能调优
    ios 性能优化之图形性能测试
    ios 性能优化之测试 iOS设备I/O活动
    ios 性能优化之定位应用程序的内存问题
    ios 性能优化之app运行时数据收集
    IOS8 理解应用程序扩展是如何工作的
    IOS8 创建一个应用程序扩展
  • 原文地址:https://www.cnblogs.com/pycrab/p/9573632.html
Copyright © 2011-2022 走看看