日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java多线程安全解决方案_java常用知识:多线程安全问题的解决方法-Lock锁

發(fā)布時(shí)間:2023/12/19 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java多线程安全解决方案_java常用知识:多线程安全问题的解决方法-Lock锁 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

jdk1.5后出現(xiàn)的

兩個(gè)方法:

void Lock()

void unlock()

使用步驟:

1.在成員位置創(chuàng)建一個(gè)ReentrantLock對(duì)象

2.在可能出現(xiàn)安全問(wèn)題的代碼前調(diào)用Lock接口中的方法Lock獲取鎖

3.在可能出現(xiàn)安全問(wèn)題的代碼后調(diào)用Lock接口中的方法unlock釋放鎖

第一種寫法

package xuexi.heima.ThreadSafe;

import java.util.concurrent.locks.Lock;

import java.util.concurrent.locks.ReentrantLock;

public class RunnableImpl2 implements Runnable {

private static int ticket = 100;

Lock l = new ReentrantLock();

@Override

public void run() {

while(true){

l.lock();

if(ticket>0){

try {

Thread.sleep(10);

} catch (InterruptedException e) {

e.printStackTrace();

}

System.out.println(Thread.currentThread().getName()+"正在賣第"+ticket+"張票;");

ticket--;

}

l.unlock();

}

}

}

第二種寫法(推薦,這樣無(wú)論是否報(bào)錯(cuò)都會(huì)施放lock鎖)

package xuexi.heima.ThreadSafe;

import java.util.concurrent.locks.Lock;

import java.util.concurrent.locks.ReentrantLock;

public class RunnableImpl2 implements Runnable {

private static int ticket = 100;

Lock l = new ReentrantLock();

@Override

public void run() {

while(true){

l.lock();

if(ticket>0){

try {

Thread.sleep(10);

System.out.println(Thread.currentThread().getName()+"正在賣第"+ticket+"張票;");

ticket--;

} catch (InterruptedException e) {

e.printStackTrace();

}finally {

l.unlock();

}

}

}

}

}

分享到:

總結(jié)

以上是生活随笔為你收集整理的java多线程安全解决方案_java常用知识:多线程安全问题的解决方法-Lock锁的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。