java多线程具体操作

线程同步:

防止多线程对共享资源访问产生影响,需要此机制限制线程的先后顺序,确保每次执行操作只有一个线程

引入“排队”和“锁”的概念:

用锁来确保线程的使用只唯一

synchronized(同步锁){
//被同步的代码

}
public synchronized void show (string name){
//被同步代码
}

同步对象:对多个线程对应的对象只能为一个

锁的使用:

synchronized修饰方法

同步对象会有默认的

synchronized如果修饰的是非静态方法,那么同步对象就是this

synchronized如果修饰的是静态方法,

则同步对象就是当前类的Class对象

第二种加锁方式:

ReentrantLock类实现:

lock加锁,unlock解锁

释放锁要在finally,因为如果加完锁后出现异常后面就不执行了,就不能释放锁了,线程就被卡住了,放在finally里出现异常捕获后还可以执行finally的语句从而释放锁便于执行别的线程

​
public class LockThread implements Runnable{
 
    ReentrantLock reentrantLock=new ReentrantLock();
    @Override


//所需要的内容
}

​

使用区别:

synchronized是一个关键字 ReentrantLock是一个类

synchronized隐式释放,运行过程中出现异常会自己释放锁

Reentrant需要手动添加锁和释放锁

synchronized修饰代码块和方法

ReentrantLock只修饰代码块

你可能感兴趣的:(java,开发语言)