摘要:作用信号量,限制同一时间,访问特定资源的线程数量,以保证合理的使用特定资源。主要方法获取锁,如果没有获取到,就堵塞释放锁示例运行结果如下可以看出,每次执行都是个。如果把和注释掉,可以看的结果如下同一时间,都打印到了控制台。
作用
信号量,限制同一时间,访问特定资源的线程数量,以保证合理的使用特定资源。
主要方法acquire:获取锁,如果没有获取到,就堵塞
release:释放锁
示例public class SemaphoreDemo { static Semaphore semaphore = new Semaphore(2); static class Thread1 implements Runnable { @Override public void run() { try { semaphore.acquire(); Thread.sleep(1000); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(Thread.currentThread().getName() + "-" + formatter.format(new Date())); semaphore.release(); } catch (InterruptedException e) { e.printStackTrace(); } } } public static void main(String[] args) { for (int i = 0; i < 8; i++) { new Thread(new Thread1()).start(); } } }
运行结果如下:
可以看出,每次执行都是2个。
如果把semaphore.acquire()和semaphore.release()注释掉,可以看的结果如下:
同一时间,都打印到了控制台。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/75274.html
摘要:线程安全问题在并发编程学习之基础概念提到,多线程的劣势之一,有个线程安全问题,现在看看下面的例子。那么,该怎么解决呢,很简单,在方法前加个同步锁。运行结果如下有两种情况,是因为看谁先抢占锁,但是输出的算法结果是正确的。 线程安全问题 在java并发编程学习之基础概念提到,多线程的劣势之一,有个线程安全问题,现在看看下面的例子。 public class NotSafeDemo { ...
摘要:在并发编程学习之显示锁里有提过公平锁和非公平锁,我们知道他的使用方式,以及非公平锁的性能较高,在源码分析的基础上,我们看看和的区别在什么地方。而非公平锁直接尝试获取锁。 在java并发编程学习之显示锁Lock里有提过公平锁和非公平锁,我们知道他的使用方式,以及非公平锁的性能较高,在AQS源码分析的基础上,我们看看NonfairSync和FairSync的区别在什么地方。 lock方法 ...
摘要:在并发编程学习之三种线程启动方式中有提过。是否执行结束,包括正常执行结束或异常结束。获取返回值,没有得到返回值前一直阻塞。运行结果如下由于任务被取消,所以抛出异常。注意的是,此时线程还在跑,和返回的是。并不能让任务真正的结束。 FutureTask 在java并发编程学习之三种线程启动方式中有提过。主要的方法如下: cancel(boolean mayInterruptIfRunni...
摘要:但是的语义不足以确保递增操作的原子性,在多线程的情况下,线程不一定是安全的。检查某个状态标记,以判断是否退出循环某个方法这边和用普通的变量的区别是,在多线程的情况下,取到后,的值被改变了,判断会不正确。 多线程为什么是不安全的 这边简单的讲述一下,参考java并发编程学习之synchronize(一) 当线程A和线程B同时进入num = num + value; 线程A会把num的值...
摘要:可以将视为,虽然实际上并不是这样实现的。这些值相对于使用改变量的线程存有的一份独立的副本。例子运行结果如下这里直接更改并发编程学习之一的例子,可以看到,的值不被线程共享。 用途 本地线程,通常用于防止对可变的单实例对象或全局变量进行共享,常见的比如数据库连接。可以将ThreadLocal视为Map,虽然实际上并不是这样实现的。也可以把事务上下文保存在ThreadLocal中,虽然方便处...
阅读 2842·2023-04-26 02:14
阅读 3674·2019-08-30 15:55
阅读 1778·2019-08-29 16:42
阅读 2676·2019-08-26 11:55
阅读 2769·2019-08-23 13:38
阅读 427·2019-08-23 12:10
阅读 1254·2019-08-23 11:44
阅读 2682·2019-08-23 11:43