多线程的基础知识

认识多线程


当我们打开任务管理器的时候可以看到这样的画面,里面的每个应用程序都是由一个或者多个进程组成的,
而线程是比进程更小的执行单位,它是在一个进程中独立的控制流,即程序内部的控制流。

· 单线程:只有一条线程的进程称为单线程;
· 多线程:有不止一个线程的进程成为多线程;
· 每个程序至少有一个线程称为主线程。
一、多线程的优点
  • 可以提高前台的运行速度;使程序中那些需要大量时间完成的流程在后台单独开启的流程完成,提高程序的响应速度。
  • 充分利用系统资源,提高效率;可以同时执行多个流程,充分利用CPU等系统资源,从而最大限度的发挥硬件的性能。

二、多线程的缺点
  • 如果程序中线程数量比较多时,系统就会花大量时间在切换线程上,反而会影响程序响应的速度。
线程同步中有会有死锁的现象,而且如果没有处理好线程同步也是存在数据处理上的错误的。 


线程的使用
多线程的使用方法:
  1. 继承Thread类然后创建run()方法,创建对象,调用start()方法;(使用start方法调用的是run()方法)
  2. 实现Runnable接口重写run()方法,首先创建Runnbale类的对象,然后以该对象为基础创建Thread类的对象,调用start()方法。
也可以使用Timer和TimerTask的组合或者内部类来实现线程的使用。


线程的生命周期
线程的生命周期包含以下五个状态。
1、新建状态;(new) 代表线程的对象已经被初始化,但没启动。线程对象已经创建,准备工作完成。
2、就绪状态;(Runnbale)调用start()方法时,该线程进入就绪状态。
3、运行状态;(Run) 处于该状态的线程在CPU内部执行。
4、阻塞状态;(Block) 线程处于执行状态,但由于没有获得CPU的执行时间,而处于CPU外部等待线程被执行的状态。
5、终止状态;(Deak) 线程执行结束,释放线程所占用的系统资源,结束线程执行的状态。(自然撤销或被停止)

线程的常用调度方法
1.线程睡眠 sleep()可使程序由运行状态进入不可运行状态,睡眠时间过后再次进入可运行状态。
2.暂停线程 yield() 暂停当前正在执行的线程对象,并执行其他线程。
3.连接线程 join() (1) join()等待该线程终止。(2) join(long millis)等待该线程终止的时间最长为 millis 毫秒。(3)、join(long millis, int nanos) 等待该线程终止的时间最长为 millis 毫秒 + nanos 纳秒。
4.中断线程 interrupt()中断线程。
5.getname() 返回该线程的名称……
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值