java复习

2020-07-09线程安全的类

2020-07-09  本文已影响0人  智障猿

线程安全的类

Collections中的静态方法将线程不安全的集合转换为线程安全的

静态方法 说明
synchronizedCollection(Collection<T> c) 返回由指定集合支持的同步(线程安全)集合
synchronizedList<T> list 返回由指定列表支持的同步(线程安全)列表
synchronizedMap(Map<k,v> m) 返回由指定mao支持的同步(线程安全)映射
synchronizedSet(Set<T> s) 返回由指定集合支持的同步(线程安全)集。
synchronizedSortedMap(SortedMap<K,V> m) 返回由指定的排序映射支持的同步(线程安全)排序映射。
synchronizedSortedSet(SortedSet<T> s) 返回由指定的排序集支持的同步(线程安全)排序集。

Lock锁

Lock实现提供比使用synchronized方法和语句可以获得更广泛的锁定操作

构造方法 说明
ReentrantLock() 创建一个ReentrantLock的实例
public class SellTicket implements Runnable {
    private int ticketCount = 100;
    private Lock lock = new ReentrantLock();
    @Override
    public void run() {
        while (true) {
            lock.lock();
            try {
                if (ticketCount > 0) {
                    System.out.println(Thread.currentThread().getName() + "正在出售第" + ticketCount + "张电影票");
                    try {
                        Thread.currentThread().sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    ticketCount--;
                }
            } finally {
                lock.unlock();
            }
        }
    }
}
上一篇下一篇

猜你喜欢

热点阅读