线程

1.线程
程序:是一段静态的代码,他的应用软件执行的蓝本
进程:是程序的一次执行过程,是系统运行程序的基本单位
线程:是比进程更小的执行单位。相当于一个任务中的一条执行路径
2.进程和线程都是一个控制流程,一个进程通常对应一个程序,一个程序可以由多个不同的线程构成
3.进程是相互独立的,不共享数据
4.线程分为单线程和多线程:
单线程:如果只有一条单一线索 存在问题
效率相对底下
没有充分合理的利用CPU
多线程:多于一条的执行走向线程
共享内存
可以实现多线程
5.进程的两个特征:
进程是可用于资源的独立单位;
进程同时又是一个可独立调度和分派的基本单位
这两个基本属性使之能够独立运行,也能够并发运行,但是在并发运行的时候,系统还需要执行一系列操作:
需要创建进程,并为之分配其所需要的资源
撤销进程,对资源进行回收
进程切换,它需要保留当前进程的CPU环境和设置新选中的进程的CPU环境
6.线程因为具有许多进程具有的特征,因此被称为轻量级进程;线程是进程中的实体,一个进程可以拥有多个线程,一个线程必须有一个父进程;
线程可以创建和撤销,从而实现程序的并发执行一般,线程具有就绪、阻塞和运行三种基本状态;
7.创建多线程的方法有两种:
继承:Thread 实现:Runnable接口
eg: A extends Thread A implments Runnable接口
8.多线程的应用:QQ聊天和访问网页
注意:不要直接在程序中调用线程run()方法
9.线程状态:
(一)新建状态NEW
创建一个线程对象后,该线程对象就处于新建状态,此时它不能运行
(二)就绪状态RUNNABLE
当线程对象调用了strat()方法后,该线程就进入了就绪状态
(三)运行状态RUNNING
如果处于就绪状态的线程获得了CPU的使用权,开始执行run()方法中的线程执行体,则该线程就处于运行状态
(四)阻塞状态Blocked
一个正在执行的线程在某些特殊情况下,如执行耗时的输入输出操作时,会放弃CPU的使用权,进入阻塞状态
(五)死亡状态Terminated
线程run()方法正常执行完毕或者线程抛出一个未捕获的异常、错误,线程就进入死亡状态
10.在单线程中,main()方法必须等到run()方法返回才能继续往下
11.Thread
要将一段代码放在一个新的线程上运行,该地阿玛所在的类应该继承Thread或Runnable接口,而需要执行的代码写在run方法里;
启动一个线程,不是调用run方法,而是调用Thread对象的strat方法;
run方法执行完后,线程也就结束了,所以,我们可以通过控制run方法中的循环条件来控制线程的终止
12.runnable
创建一个runnable接口实现类;把my传递给thread类
13.实际工作中,几乎所有的多线程应用都用实现runnable这种方式。
Runnable适合多个相同程序代码到现场去处理同一资源的情况。CPU同程序的代码数据有效地分离,较好地体现了面向对象的设计思想。
避免由于Java的单继承特性带来的局限性,也就是如果新建的类要继承其他的类的话,因为Java中不支持多继承,就只能实现java.lang.Runnable接口。
有利于程序的健壮性,代码能够被多个线程共享代码与数据是独立的。
继承thread类
不能在继承其他类了。
编写接单,可以直接操纵线程,无需使用thread.currentThread()
14.阻塞和解除阻塞
阻塞;解除阻塞
调用sleep放弃占用资源;sleep时间结束
等待同步锁;获得同步锁
等待通知;获得通知
调用supend挂起线程;resume
15.与线程控制的方法
start()新建的线程进入就绪状态。
run()线程进入running状态
interrupt()中断进程
getpriority()/setpriority()获得/设置线程优先级
sleep()线程睡眠指定的一段时间
join()调用这个方法的主线程,会等待加入的子线程执行完成
wait()使当前线程放弃同步锁进入等待,直到其他线程进入此同步锁
notify()唤醒此同步锁上等待的第一个调用wait()方法的线程
notifyAll()唤醒此同步锁上调用wait()方法的所有线程

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值