Android-Thread 线程<二>

2023-12-01  本文已影响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()(只中断了标志位)


上一篇下一篇

猜你喜欢

热点阅读