Javaにおけるフェアロックと非フェアロックの違い
フェアロックとは、どのスレッドが先に実行されるかを指し、先にロックを得ることができます.非公平ロックは、スレッドが先に実行されるかどうかにかかわらず、ランダムにロックを取得します.
コードを見ればわかります.
コードを見ればわかります.
package FairAndUnFailLock;
public class TestMain {
public TestMain() {
}
public static void main(String[] args) {
Service service = new Service();
ThreadClass tcArray[] = new ThreadClass[20];
for(int i=0;i<20;i++){
tcArray[i] = new ThreadClass(service);
tcArray[i].start();
}
}
}
package FairAndUnFailLock;
import java.util.concurrent.locks.ReentrantLock;
public class Service {
public ReentrantLock lock = new ReentrantLock(false);
public Service() {
}
public void getThreadName() {
System.out.println(Thread.currentThread().getName() + " ");
}
}
package FairAndUnFailLock;
public class ThreadClass extends Thread{
private Service service;
public ThreadClass(Service service) {
this.service = service;
}
public void run(){
System.out.println(Thread.currentThread().getName() + " ");
service.lock.lock();
service.getThreadName();
service.lock.unlock();
}
}