美文网首页
Android-Thread 线程<二>

Android-Thread 线程<二>

作者: 没有了遇见 | 来源:发表于2023-12-01 16:26 被阅读0次
    进程:是系统进行内存分配的基本单位,是计算机进行数据处理的一次活动,进程是线程的容器.
    线程:是操作系统进行运算调度的最小单位,包含在进程中.一个进程最少有一个线程

    1:线程总结:

    1:一个进程最少有一个进程
    2:线程基于内存共享,所以线程间内存是共享的.
    3:在CPU调度进程之前需要准备一些数据,如开辟内存,准备资源文件,以及运行过程中产生的一些变量的临时的存储,这些和进程进行关联的对象称之为上下文Context.

    问题?
    线程和进程的区别?
    进程是一个程序或者一个应用,线程是进程的一个认为,进程是线程的容器.

    2:线程方法说明

    1:Thread.sleep()  强制线程休眠一段时间 进度倒计时等待状态
    
    2:thread.start()   启动线程,线程进入就绪状态 等待CPU调度
    
    3:thread.join()    将当前线程加入CPU,并将前一个线程等待,等待当前线程执行完之后再执行
    
    4:Thread.yield()   使得当前线程退出CPU占用,将CPU调度全分配给其他同等优先级的线程
    
    5:thread.interrupt() 将当前线程状态置为阻塞位标志置为阻断状态 但是不会中断线程(注意不会中断线程,要想实现终端的操作需要在thread中加死循环判断)
    
    注意:
    1:线程处于阻塞状态 调用thread.interrupt()会改变标志位但是会抛异常
    2:若当前非阻塞状态,会将阻塞标志位改为true
         
    

    3:线程状态

    线程状态说明:
    
    1:Thread.State.NEW 线程创建状态
     Thread thread= new Thread();之后线程就进入了创建的 NEW 状态
    
    2:Thread.State.RUNNABLE 线程就绪状态
      线程就绪状态就是线程已经启动,等待CPU调用,cpu调度到线程的时候可以直接运行
    
    线程就绪状态情况:
    - thread.start() 线程启动后就会进入RUNNABLE就绪状态    
    - sleep(long) 休眠方法执行结束后会进入RUNNABLE 状态
    - 其他线程通过join()方法加入运行结束后,当前线程进入RUNNABLE就绪状态
    - 当前线程调用yield()方法 当前线程进入就绪状态
    3:Thread.State.BLOCKED 阻塞状态
      Thread 代码运行到拥有锁(Synchronized Lock)的代码块时,Thread就进入了阻塞状态
    4:Thread.State.WAITING 等待状态 进入此状态不会被CPU调度,需要被显示的唤醒才能执行
    怎么进入WAITING状态:
        1:object.wait() 会使线程进入等待状态,需要 object.notify() 唤醒
        2:其他线程通过join()加入当前线程前边,当前线程就处于WAITING状态,join()的线程运行结束后切换成RUNNABLE状态.
    
    5:Thread.State.TIMED_WAITING 倒计时等待状态.这种状态不会被CPU调用,需要倒计时结束才会被调用
    
    怎么进入TIME_WAITING:
        1:Thread.sleep(long)
        2:object.wait(long)
        3:join(long)
    
    6:Thread.State.TERMINATED 结束状态 一个完全运行完成的线程状态 结束状态.
    
    

    4: 问题

    1:Thread 中start() 和run 的区别
    start() 是启动进程的方法 run 只是Runable 的抽象方法实现  
    
    2:Thread sleep 和wait 的区别
    1:Thread.sleep() sleep() 是Thread 的方法 wait 是Object的方法
    2:wait()需要在同步代码块中使用,作用是释放锁,sleep和锁操作无关可以使用到任何地方
    3:wait () 释放锁   sleep() 不释放锁
    
    
    3:Thread的常见操作
    1:Thread 开启
            new Thread().start()
    2:Thread 插入
        thread.join()
    3:Thread 排序
      thread.join()
    4:中断当前线程
      thread.yield()
    5:中断标志位
      thread.interrupt()(只中断了标志位)
    
    
    

    相关文章

      网友评论

          本文标题:Android-Thread 线程<二>

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