Java多线程概述以及多线程实现

1多线程概述

1.1什么是多线程

​ 1.线程属于进程,一个进程可以多个线程

​ 2.线程是进程中的一个独立执行单元

​ 3.线程创建开销相对于进程来说更小

​ 4.线程具有并发性

1.2基础知识点:

main方法是一个主线程来看待

获取当前线程API

currentThread()

静态方法不能存在this关键字

线程同步与性能的关系

锁的越细性能越好;线程同步方式极大的影响了性能
因此能不上锁不上锁;

多线程 的代码由于cpu的调度方式不同,最终呈现的结果是代码随机性跑完,每次运行的结果不同;

线程常用的API

setName,getName,currentThread

2多线程三种创建方式

2.1直接继承式

写一个类继承Thread
重写run()
主接口中main,直接创建对象,start()即可;

2.2实现Runnable接口

创建一个类继承Runnable接口
重写run()
创建一个线程任务对象
将线程任务对象包装成线程对象
直接start()

2.3使用Callable接口

前两种实现方法的缺点:无法获取线程的执行结果
实现Callable接口
重写run()
创建Callalble对象
将Callable对象包装成未来任务对象
将未来任务对象包装成线程对象
start()

3线程同步方式

同步方式分为三种:同步代码块,同步方法,lock锁

为什么要进行同步:并发程序中多个线程抢占资源可能会出现安全问题;具体来说cpu调度过程中线程a run()的时候,还没有将资源变量进行更新;b 就开始获取资源变量

3.1同步代码块

格式

synchronized(obj){

		//需要上锁的代码块

}

synchronized就是同步的意思,同步代码块就是将一些代码块进行捆绑执行;防止资源抢占出现安全问题;

注:obj是 可以任意的且唯一存在 的锁对象
静态方法中	类名.class
实例方法中	this.class

3.2同步方法

直接将方法中加入synchronized关键字

在这里插入图片描述

关于锁对象;与同步代码块介绍的一致;、

3.3lock显示锁

java.util.concurrent.locks.Lock

一般写法:

​ 1.创建个lock对象

​ private final Lock lock = new RenentrantLock();

​ 2.直接加锁解锁

​ lock.lock();

​ lock.unlock();

上述写法的问题:
10000行代码出现异常,直接抛,但是解锁没有执行;因此线程直接锁死

正确的写法

try{
	lock()
}Exception e{

}finally{
	unlock()
}

意义:不论是否抛出异常,unlock都可以执行;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值