当前位置: 首页 > news >正文

关于网站建设与发布的书籍竞价系统

关于网站建设与发布的书籍,竞价系统,h5开发是什么意思,dreamweaver修改wordpress模板1 读写锁(ReadWriteLock)📌 要点实现类:ReentrantReadWirteLock通过读写锁实现更细粒度的控制,当然通过Synchronized和Lock锁也能达到目的,不过他们会在写入和读取操作都给加锁,影响性能&#x…

1 读写锁(ReadWriteLock)

📌 要点

  • 实现类:ReentrantReadWirteLock

  • 通过读写锁实现更细粒度的控制,当然通过Synchronized和Lock锁也能达到目的,不过他们会在写入和读取操作都给加锁,影响性能;

  • 读写锁在加锁同时,给读取操作进行优化,简单来说性能更高;

  • 读写锁中,读锁是共享锁,多个线程可以同时占有;写锁是独占锁,一次只能被一个线程占有。

import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;public class ReadWriteLockDemo {public static void main(String[] args) {MyCache myCache = new MyCache();//写入for (int i = 0; i < 5; i++) {final int temp = i;new Thread(()->{myCache.put(temp+"",temp+"");},String.valueOf(i)).start();}//读取for (int i = 0; i < 5; i++) {final int temp = i;new Thread(()->{myCache.get(temp+"");},String.valueOf(i)).start();}}
}//自定义缓存
class MyCache{private volatile Map<String,Object> map = new HashMap<>();//读写锁,更细粒度的控制private ReadWriteLock readWriteLock = new ReentrantReadWriteLock();//存、写入的时候,只希望同时只有一个线程写public void put(String key,Object value){readWriteLock.writeLock().lock();try {System.out.println(Thread.currentThread().getName()+"写入"+key);map.put(key,value);System.out.println(Thread.currentThread().getName()+"写入OK");} catch (Exception e) {e.printStackTrace();} finally {readWriteLock.writeLock().unlock();}}//取、读,所有人都可以读public void get(String key){readWriteLock.readLock().lock();try {System.out.println(Thread.currentThread().getName()+"读取"+key);map.get(key);System.out.println(Thread.currentThread().getName()+"读取OK");} catch (Exception e) {e.printStackTrace();} finally {readWriteLock.readLock().unlock();}}
}

控制台输出:

2 阻塞队列(BlockingQueue)

阻塞队列(BlockingQueue) 是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。

📌 常用实现类

📌 UML相关图

📌 四组API

方式

抛出异常

不会抛异常,有返回值

阻塞等待

超时等待

添加操作

add()

offer()供应

put()

offer(E e, long timeout,TimeUnit unit)

移除操作

remove()

poll()获得

take()

poll(long timeout, TimeUnit unit)

判断队列首部

element()

peek()偷看,偷窥

📌 代码举例

public class BlockingQueueDemo {public static void main(String[] args) throws InterruptedException {//队列的大小ArrayBlockingQueue queue = new ArrayBlockingQueue(3);System.out.println(queue.offer("A"));System.out.println(queue.offer("B"));System.out.println(queue.offer("C"));System.out.println(queue.offer("D",2, TimeUnit.SECONDS));System.out.println("------------------------");System.out.println(queue.poll());System.out.println(queue.poll());System.out.println(queue.poll());System.out.println(queue.poll());}

控制台输出:

3 同步队列(SynchronousQueue)

简单来说,SynchronousQueue是一个没有数据缓冲的阻塞队列,它是实现AbstractQueue接口的。

SynchronousQueue容量为0,生产者线程插入数据(put)必须等待消费者的移除数据(take),反之亦然,也就是说同步队列的插入和移除必须是同步的。

public class SynchronousQueueDemo {public static void main(String[] args) throws InterruptedException {SynchronousQueue<String> queue = new SynchronousQueue<>();//同步队列new Thread(()->{for (int i = 1; i <= 3; i++) {try {queue.put(String.valueOf(i));System.out.println(Thread.currentThread().getName()+"put "+i);} catch (InterruptedException e) {e.printStackTrace();}}}).start();new Thread(()->{for (int i = 1; i <= 3; i++) {try {TimeUnit.SECONDS.sleep(1);System.out.println(Thread.currentThread().getName()+"take "+queue.take());} catch (InterruptedException e) {e.printStackTrace();}}}).start();}
}

控制台输出:

📢 可以看到put和take是伴随的,同时执行顺序非固定,说明阻塞队列里边其实不存元素。

http://www.ds6.com.cn/news/61061.html

相关文章:

  • 西宁做网站最好的公司哪家好软文广告范例大全
  • 网站编辑seo寄生虫seo教程
  • 家校互动平台网站seo优化检测
  • 华强北做电子网站专业拓客团队怎么收费
  • 在哪里可以建设网站58同城黄页推广
  • 中国是唯一一个拥有空间站网络舆情应急预案
  • 网站建设手机软件网络推广方法大全
  • 做网站赚钱多吗刷推广链接
  • c mvc网站开发实例搭建网站需要哪些步骤
  • 免费建站网站建设深圳正规seo
  • windows同步wordpressseo优化常识
  • 惠州网站建设制作什么网站百度收录快
  • 外国纪录片网站机场建设广告网站有哪些
  • 高端设计机构seo关键词排名优化矩阵系统
  • 长春个人做网站移动网站如何优化排名
  • 室内设计师怎么找郑州seo顾问热狗
  • 建设商城网站的书籍钱潍坊网站建设公司
  • wordpress菜单颜色重庆seo代理
  • 海南省海口市政府网站官网武汉seo服务多少钱
  • 手机网站架构潍坊关键词优化软件
  • 房产网站设计广州seo网络优化公司
  • 泸州大浪科技做网站专业做加盟推广的公司
  • 武汉网站制作哪家强重大军事新闻最新消息
  • 阿里巴巴的电子商务网站建设山东百度推广代理
  • 广州天与地网站建设seo优化教学视频
  • 学摄影的网站有哪些搜索引擎优化的概念
  • 去视频网站做编辑专业搜索引擎seo服务
  • 做民宿的网站国外网站排名前十
  • ftp服务器设置网站主页空间刷赞网站推广
  • 美的公司网站建设的目的企业如何进行网络推广