2019-08-18

2019-08-19  本文已影响0人  kkkk小天使

多线程

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

感悟

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

上一篇下一篇

猜你喜欢

热点阅读