初识Java多线程

今天学多线程这一块,在这里简单做下笔记整理。

线程与进程
1、线程: 程序中单独顺序的控制流,是程序执行的最小单元,只能使用分配给程序的资源和环境。
2、进程:执行中的程序,是系统进行资源分配和调度的独立单位。(进程是动态的概念,程序是静态的概念)
3、联系:一个进程至少要包含一个以上线程。在引入线程的操作系统中,线程是独立调度的基本单位,进程是拥有资源的基本单位。
4、单线程:一个程序只执行一个线程,如:主方法就是一个线程
多线程:一个程序中运行多个任务,目的是为了更好地使用CPU资源。


线程创建
1、通过继承Thread类,必须重写run()方法,因为此时run方法什么都没执行。Thread类在java.lang包中定义
2、通过实现Runnable接口,然后实现其run()方法,还要使用new Thread()生成线程对象
实现流程:将要线程执行的代码放到run()方法中,然后调用start方法启动线程,start方法会为线程的执行准备系统资源,然后调用run方法。
Thread类也实现Runnable接口,因此实现Runnable接口中的run方法。
3、记得应用程序还可以使用Executor框架来创建线程池

应用在已继承别的对象时,由于java不支持多继承,只能实现Runnable接口。而线程池也是比较高效易实现的。


常用方法
getName 获取线程名称
getPriority 获取线程的优先级
isAlive 判断线程是否在运行
join 等待线程终止
run 线程入口点
sleep 挂起线程一段时间
start 通过调用线程的运行方法启动线程
currentThread 获取当前线程对象


优先级
优先级设置
NORM_PRIORITY 5
MAX_PRIORITY 10
MIN_PRIORITY 1
默认值是5


同步和死锁

多线程并发控制

1、同步代码块:代码块前加synchronized关键字,锁括号里面配置对象(细粒度并发控制)
2、同步方法:方法前加synchronized关键字,锁当前实例对象(粗粒度并发控制)
3、静态同步方法:synchronized方法是static的,锁当前类的Class对象
4、死锁(deadlock):两个线程循环依赖一对同步对象是,会发生死锁。根源于使用synchronized关键字管理线程对特定对象的访问。


状态和生命周期
6种线程状态
NEW 新创建一个线程对象,线程还没有开始运行
BLOCKED 线程因等待需要的锁而挂起执行
RUNNABLE 线程要么当前正执行,要么获得CPU的访问权后执行
WAITING 线程因等待某些动作而挂起执行
TIME_WAITING 线程挂起执行一段指定时间
TERMINATED 线程已经完成执行

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值