美文网首页
2019-08-18

2019-08-18

作者: kkkk小天使 | 来源:发表于2019-08-19 13:37 被阅读0次

    多线程

    1、进程:正在运行的程序 ( QQ   IDE   浏览器 )

                   系统会为这个进程分配独立的内存资源(申请内存资源)

    2、线程:具体执行任务的最小单位

              一个进程最少拥有一个线程(主线程  运行起来就执行的线程)

              显示界面的一般称为UI主线程 

              线程之间共享内存资源(进程申请的)

              线程之间可以通信(数据传递:多为主线程和子线程)

              每一个线程都有自己的运行回路(生命周期)

    3、线程的生命周期:

         NEW:新建

         RUNABLE:run  runable 就绪状态,只要抢到时间片就可以运行

         BLOCKED:阻塞状态   sleep   wait

         TIMED_WAITING

         TERMINAED:终止

    4、为什么需要创建子线程

           如果在主线程中存在比较耗时的任务,阻塞了主线程,要等任务执行完毕才可以执行后面的,用户体验差

           为了不阻塞主线程,需要将耗时的任务放在子线程中处理

    5、如何创建一个子线程

    (1)协议类继承于 Thread 实现 run 方法

          join:让当前这个线程阻塞,等join执行完毕再执行

          setName:设置线程名称

          getName:获取线程名称

          currentThread:获取当前运行的线程对象

          start:开始任务

    6、接口,抽象方法

         创建一个任务:创建一个类实现Runnable接口

         使用Thread操作这个任务

    7、实现Runnable解救,实现run方法

         创建任务:创建类实现Runnable接口

         使用Thread:为这个任务分配线程

         开启任务:start

    8、线程安全(火车票)

         火车票有多个平台但都是同一个系统

        synchronized   Lock  加锁解锁

        synchronized  同步监听器,需要一把锁

        任何对象都有自己的一把锁

        如果多个线程操作同一个代码块,并且需要同步,那么必须操作同一个对象即同一把锁

    (1)synchronized(监听器/对象/锁){

           需要同步代码块

          }

    (2)同步方法:同步监听器是当前对象本身

         必须确保多个对象调用的同步方法操作一个对象

         本质是同步代码块

    9、(1)如何创建一个线程   Thread    Runable

         (2)线程的同步   synchronized   ReentrantLock

         (3)主线程和子线程之间使用接口回调数据

         (4)线程间的通信:synchronized  (wait  notifi  notifiall)

                                     ReentrantLock

                                     Condition c = lock.newCondition()

                                     await single singleall

    感悟

    任何时候都不能放松学习,被你抛弃的迟早会抛弃你

    相关文章

      网友评论

          本文标题:2019-08-18

          本文链接:https://www.haomeiwen.com/subject/sualsctx.html