java多執行緒與併發 - 自己實現一個簡單的鎖(實現Lock介面)
package com.zx.lock;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
public class MyLock implements Lock {
//要維護1.當前是否有鎖(保證能鎖住),2.拿到鎖的執行緒和3.已上鎖的數量(保證可重入)
//判斷當前是否有鎖。
private volatile boolean isLock=false;
//拿到鎖的執行緒。
private Thread lockedThread=null;
//已上的鎖的數量。
private int lockCount;
@Override
public synchronized void lock() {
Thread currentThread = Thread.currentThread();
while(isLock && currentThread!=lockedThread){
try {
wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
isLock=true;
lockedThread=currentThread;
lockCount++;
}
@Override
public synchronized void unlock() {
if(Thread.currentThread()==lockedThread){
lockCount--;
if(lockCount==0){
notifyAll();
isLock=false;
}
}
}
@Override
public void lockInterruptibly() throws InterruptedException {
// TODO Auto-generated method stub
}
@Override
public boolean tryLock() {
// TODO Auto-generated method stub
return false;
}
@Override
public Condition newCondition() {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean tryLock(long time, TimeUnit unit) throws InterruptedException {
// TODO Auto-generated method stub
return false;
}
}
相關文章
- Java多執行緒/併發06、執行緒鎖Lock與ReadWriteLockJava執行緒
- Java高併發與多執行緒(二)-----執行緒的實現方式Java執行緒
- 多執行緒與併發-----Lock鎖技術執行緒
- 用多執行緒,實現併發,TCP執行緒TCP
- Java之實現多執行緒的方式二:實現Runnable介面Java執行緒
- Runnable介面實現多執行緒執行緒
- Java多執行緒的實現Java執行緒
- Java 實現執行緒死鎖Java執行緒
- 啃碎併發(六):Java執行緒同步與實現Java執行緒
- Java併發實戰一:執行緒與執行緒安全Java執行緒
- Java之實現多執行緒的方式三:實現Callable介面(結合執行緒池使用)Java執行緒
- java實現多執行緒的方法Java執行緒
- Java多執行緒的實現方法Java執行緒
- Java多執行緒實現方式Java執行緒
- Java 多執行緒併發程式設計之互斥鎖 Reentrant LockJava執行緒程式設計
- Java併發和多執行緒4:使用通用同步工具CountDownLatch實現執行緒等待Java執行緒CountDownLatch
- 不使用synchronized和lock,如何實現一個執行緒安全的單例?synchronized執行緒單例
- 多執行緒與併發----讀寫鎖執行緒
- 多執行緒實現多工一執行緒
- Python並行程式設計(二):多執行緒鎖機制利用Lock與RLock實現執行緒同步Python並行行程程式設計執行緒
- 【多執行緒高併發程式設計】二 實現多執行緒的幾種方式執行緒程式設計
- JAVA多執行緒下載的實現Java執行緒
- Java高併發與多執行緒(一)-----概念Java執行緒
- 自己實現一個簡單的 PromisePromise
- Java併發和多執行緒2:3種方式實現陣列求和Java執行緒陣列
- java多執行緒與併發 - 併發工具類Java執行緒
- Java 併發和多執行緒(一) Java併發性和多執行緒介紹[轉]Java執行緒
- java多執行緒與併發 - 執行緒池詳解Java執行緒
- Java實現多執行緒的三種方式Java執行緒
- Java 執行緒池的原理與實現Java執行緒
- SQL Server2000中執行一個SQL, 在lock上發現自己鎖自己SQLServer
- Java多執行緒學習(六)Lock鎖的使用Java執行緒
- Java多執行緒【三種實現方法】Java執行緒
- Java多執行緒-基礎及實現Java執行緒
- 多執行緒與高併發(一)多執行緒入門執行緒
- Java進階篇:多執行緒併發實踐Java執行緒
- 實現一個併發任務執行框架框架
- JAVA多執行緒併發Java執行緒