线程

一、核心概念

1.核心是独立的执行路径.
2.在程序执行时,后台会有多个线程
3.main()称为主线程,为程序的入口,用于执行整个程序.
4.在一个进程中如果开辟了多个进程,线程的运行由调度器安排调度,调度器是与操作系统紧密相关的,先 后顺序是不能人为干预的.
5.线程会带来额外的开销,如cpu调用时间,并发控制开销.
6.每个线程在自己的工作内存交互,内存控制不当会造成数据不一致.

二、多任务

1.程序时指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念.
2.而进程则是执行程序的一次执行过程,他是一个动态的概念.是系统资源分配的单位.
3.通常在一个进程中可以包含若干个线程,当然一个进程重至少有一个线程.不然没有存在的意义.
4.线程是cpu调度和执行的单位.

三、线程的5个状态

1.创建状态:ThreadA ta=new ThreadA();
2.就绪状态:线程启动以后,没有抢占到CPU资源
3.运行状态:线程抢到资源开始完成自己的任务
4.阻塞状态:程序员调用某个方法将线程转入休眠状态,冻结,不会和其他线程抢占资源
5.死亡状态:调用方法+自然死亡

四、线程的方法

1.currentThread:获取当前线程
2.getName:获取线程名字
3.setName:修改线程名字
4.getPriority:获取线程优先级
5.setPriority:修改线程优先级
6.sleep:让线程休眠–>阻塞状态
7.join:强行插队
8.yeild:线程礼让
9.interrupt:线程中断
10.isAlive:判断线程是否处于活动状态

五、线程调度方法

1.sleep:当前线程再指定时间内转入阻塞状态,时间没有结束前一直处于冻结,无法和其他线程抢占资源
2.join:其他线程先把CPU资源让出来,让当前线程把自己的任务完成以后,再把资源还给其他线程。适合处理紧急事件
3.yeild:表面礼让,当前线程将资源吐出来,但是自己立马会转入就绪状态,继续和其他线程抢占资源。

六、线程同步

1.解决问题:多个线程抢占同一个资源出现冲突的问题
解决方式:
a:同步方法:synchronized public void test(){}
b:同步代码块:synchronized(this){代码}
线程安全:实现线程同步则认为线程是安全的,但是效率比较低
常见线程安全的类:
a.安全:HashTable和StringBuffer
b.不安全:HashMap和StringBuilder

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值