美文网首页
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()(只中断了标志位)


相关文章

  • 主线程子线程事务同步

    一、主线程 二、子线程

  • juc9-Executors

    0 线程池类图 一 ForkJoinPool 分治线程池 二 ThreadPoolExecutor 固定线程数线程...

  • Linux下多线程的使用

    一、线程的创建 1.创建分离线程方法一:(常用) 方法二: 2.创建非分离线程 二、线程的使用 三、分离线程与非分...

  • 多线程介绍

    一、进程与线程 进程介绍 线程介绍 线程的串行 二、多线程 多线程介绍 多线程原理 多线程的优缺点 多线程优点: ...

  • Java 多线程之线程的创建及其使用

    一、创建线程以及启动线程 二、停止线程 三、线程类中函数详解 一、创建线程以及启动线程 创建线程:Java中创建线...

  • 多线程方法

    一. 基础并行多线程结构 二. 标准多线程方法,控制并发线程数,带线程锁

  • 多线程基本概念

    一、什么进程 二、什么线程 三、什么是多线程 四、主线程和子线程 主线程: 子线程: 多线程的优缺点优点: 缺点 ...

  • Day19——threading

    一、导入线程库 二、创建子线程 函数创建线程 Thread(target,args) - 创建子线程对象说明...

  • iOS多线程:NSThread

    目录一,线程创建二,线程通信三,线程状态 一,线程创建 1,实例方法 initWithTarget: initWi...

  • Python爬虫第六天:进程-线程-互斥锁-同步异步-队列-生产

    内容简述: 一:初始线程、进程 二:进程和线程的区别 三:线程的调用方式 四:线程安全与线程锁 ...

网友评论

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

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