Java多线程(PART XXIV)公平锁和非公平锁
来源:互联网 发布:天谕角色数据 编辑:程序博客网 时间:2024/06/06 02:23
公平锁:
公平锁表示线程获取锁的顺序是按照线程加锁的顺序来分配的。
示例代码:
import java.util.concurrent.locks.ReentrantLock;import java.lang.Thread;class MyService{ private ReentrantLock lock; public MyService(boolean isFair){ super(); lock=new ReentrantLock(isFair); } public void serviceMethod(){ try{ lock.lock(); System.out.println("ThreadName="+Thread.currentThread().getName()+"获取锁定"); }finally{ lock.unlock(); } }}public class RunFair{ public static void main(String[]args){ final MyService myservice=new MyService(true); Runnable runnable=new Runnable(){ @Override public void run(){ System.out.println("线程"+Thread.currentThread().getName()+"运行了"); myservice.serviceMethod(); } }; Thread[] threadArray=new Thread[10]; for(int i=0;i<10;i++){ threadArray[i]=new Thread(runnable); } for(int i=0;i<10;i++){ threadArray[i].start(); } }}
运行结果:
结果分析:
执行结果基本成为有序状态,先start的线程先获得锁。
非公平锁:
一种获得锁的抢占机制,是随机获得锁的,和公平锁不一样的地方就是先来的不一定先得到锁,这个方式可能到时某些进程一直拿不到锁,结果也就不公平了。
示例代码:
修改一行代码
final MyService myservice=new MyService(false);
运行结果:
结果分析:
此时的结果基本是乱序的,先start的线程不一定先获得锁。
阅读全文
0 0
- Java多线程(PART XXIV)公平锁和非公平锁
- java多线程的公平锁和非公平锁
- Java多线程--非公平锁
- Java多线程公平锁与非公平锁
- java并发库 Lock 公平锁和非公平锁
- java之ReentrantLock公平锁和非公平锁
- java并发库 Lock 公平锁和非公平锁
- Java中的公平锁和非公平锁实现详解
- Java中ReentrantLock的公平锁和非公平锁
- Java多线程Lock对象之公平锁和非公平锁
- Java多线程编程4--Lock的使用--公平锁和非公平锁
- java 非公平锁
- 公平锁和非公平锁
- 公平锁和非公平锁
- 公平锁和非公平锁
- 非公平锁 和 公平锁
- JAVA多线程-Lock的使用(二)-公平锁与非公平锁
- 公平锁和非公平锁(demo)
- ES6之模块
- K
- poj 1050 to the max
- 使用switch语句来进行程序中的加减乘除运算
- matlab中Physionet中数据读取
- Java多线程(PART XXIV)公平锁和非公平锁
- Mac 设置Launchpad 的列数和行数
- 文本属性
- phpexcel类导出数据 导入数据
- Android密码隐藏
- 决策树(二)C4.5算法
- 安徽全面排查涉及个人隐私政府信息
- 牛客网---2016---网易升级之路
- Motorola S-records(S19)文件格式详解