邯郸网站建设效果好怎样经营好一个网站

pingmian/2025/10/12 8:32:57/文章来源:
邯郸网站建设效果好,怎样经营好一个网站,做视频网站软件,公司高端网站建设LockSupport工具 当需要阻塞或唤醒一个线程的时候#xff0c;都会使用LockSupport工具类来完成相应工作定义了一组公共静态方法#xff0c;提供了最基本的线程阻塞和唤醒功能定义了一组以park开头的方法用来阻塞当前线程#xff0c;unpark方法来唤醒一个被阻塞线程 void pa…LockSupport工具 当需要阻塞或唤醒一个线程的时候都会使用LockSupport工具类来完成相应工作定义了一组公共静态方法提供了最基本的线程阻塞和唤醒功能定义了一组以park开头的方法用来阻塞当前线程unpark方法来唤醒一个被阻塞线程 void park()阻塞当前线程如果调用unparkThread thread 方法或者当前线程被中断才能从park方法返回void parkNanos(long nanos)阻塞当前线程最长不超过nanos纳秒返回条件在park的基础上超时返回void parkUntil(long deadline)阻塞当前线程直到deadline时间void unpark(Thread thread)唤醒处于阻塞状态的线程thread //不需要在锁块中public static void main(String[] args) {Thread a new Thread(() - {System.out.println(Thread.currentThread().getName() \t ----come in);LockSupport.park();System.out.println(Thread.currentThread().getName() \t ----被唤醒);}, A);a.start();Thread b new Thread(() - {LockSupport.unpark(a);System.out.println(Thread.currentThread().getName() \t ----唤醒动作);}, B);b.start();}Condition接口 任意一个java对象都拥有一组监视器方法包括wait()wait(long timeout),notify(),notifyAll(),这些方法与synchronized关键字配合实现等待/通知模式Condition接口提供了类似object监视器方法与lock配合可以实现等待/通知模式 Condition接口示例 Condition依赖lock对象创建出来Condition定义了等待通知两种类型方法线程调用这些方法时需要提前获取到Condition对象关联的锁 调用await方法当前线程会释放锁并在此等待其他线程调用Condition对象的signal方法通知当前线程后当前线程从await方法返回并在返回之前已经获取了锁 import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock;public class ConditionUseCase {Lock lock new ReentrantLock();Condition condition lock.newCondition();public void conditionWait() throws InterruptedException{lock.lock();try {condition.await();}finally {lock.unlock();}}public void conditionSignal() throws InterruptedException{lock.lock();try {condition.signal();}finally {lock.unlock();}} }condition定义的部分方法 void await当前线程进入等待状态直到被通知signal或中断当前线程将进入运行状态且从await方法返回的情况包括其他线程调用该condition的signal或signalAll方法而当前线程被选中唤醒 其他线程调用interrupt方法中断当前线程 如果当前等待线程从await方法返回那么表明该线程已经获取了condition对象锁对应的锁 void awaitUninterruptibly当前线程进入等待状态直到被通知该方法对中断不敏感 long awaitNanoslong nanosTimeout当前线程进入等待状态直到被通知中断或者超时返回值表示剩余时间。如果在nanosTimeout纳秒之前被唤醒那么返回值就是实际耗时如果返回值是0或者负数那么可以认定已经超时 boolean awaitUntilDate deadline当前线程进入等待状态直到被通知中断或到某个时间如果没有到指定时间就被通知方法返回true否则表示到了指定时间方法返回false void signal唤醒一个等待在condition上的线程该线程从等待方法返回前必须获得与condition相关联的锁 void signalAl()l 唤醒所有等待在condition上的线程该线程从等待方法返回的线程必须获得与condition相关联的锁 示例通过有界队列了解Condition使用方式有界队列是一种特殊的队列当队列为空时队列的获取操作将会阻塞获取线程直到队列中有新增元素当队列已满时队列的插入操作将会在阻塞插入线程直到队列出现空位。 首先获取锁保证数组修改的可见性和排他性。当数组数量等于数组长度时表示数组已满则调用notFull.await(),当前线程随之释放锁并进入等待状态如果数组数量不等于数组长度表示数组未满则添加元素到数组中同时通知等待在notEmpty上的线程数组中已经有新元素可以获取在添加和删除方法中使用while循环而非if判断目的是防止过早或意外通知只有条件符合才能退出循环 public class BoundedQueue {private Object[] items;//添加的下标删除的下标和数组当前的数量private int addIndex,removeIndex,count;private Lock lock new ReentrantLock();private Condition notEmpty lock.newCondition();private Condition notFull lock.newCondition();public BoundedQueue(int size){items new Object[size];}//添加一个元素如果数组满则添加线程进入等待状态直到有空位public void add(T t) throws InterruptedException{lock.lock();try {while (count items.length){notFull.await();}items[addIndex] t;if (addIndex items.length){addIndex 0;}count;notEmpty.signal();}finally {lock.unlock();}}//由于头部删除一个元素如果数组为空则删除线程进入等待状态直到有新添加元素SuppressWarnings(unchecked)public T remove() throws InterruptedException{lock.lock();try {while (count 0){notEmpty.await();}Object x items[removeIndex];if(removeIndex items.length){removeIndex 0;}--count;notFull.signal();return (T)x;}finally {lock.unlock();}}}condition实现分析 每个condition对象包含一个队列等待队列该队列是condition对象实现等待/通知功能的关键。 等待队列 一个FIFO队列condition拥有首节点和尾节点当前线程调用Condition.await方法该线程释放锁将会以当前线程构造节点并将节点从尾部加入等待队列。调用await方法的线程必定是获取了锁的线程即该过程是由锁来保证线程安全的。 等待 调用await方法会使当前线程进入等待队列并释放锁同时线程状态变成等待状态。从队列的角度看调用await方法相当于同步队列的首节点获取了锁的节点移动到condition等待队列中当等待队列中的节点被唤醒则唤醒节点的线程开始尝试获取同步状态如果不是通过其他线程调用condition.signal方法唤醒而是对等待线程进行中断则会抛出InterruptedException 通知 调用signal方法将会唤醒在等待队列中等待时间最长的节点首节点在唤醒节点之前会将节点移到同步队列中。当前线程必须是获取了锁的线程然后获取等待队列的首节点将其移动到同步队列并使用LockSupport唤醒节点中的线程调用同步器的enqNode node方法等待队列中的头节点线程安全地移动到同步队列。当节点移动到同步队列后当前线程在使用LockSupport唤醒该节点的线程被唤醒后的线程将从await方法中的while循环中退出isOnSyncQueue(Node node)方法返回true节点已经在同步队列中进而调用同步器的acquireQueued方法加入到获取同步状态的竞争中。成功获取同步状态锁之后被唤醒的线程将从先前调用的await方法返回此时线程已经成功获取了锁signalAll方法相当于对等待队列中的每个节点均执行一次signal方法效果就是将等待队列中所有节点全部移动到同步队列中并唤醒每个节点的线程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/88447.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站建设策划怎么沟通wordpress搬迁后多媒体库无法

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

网站制作留钱免费建站网站 百度一下

题干: 在一个社区里,每个人都有自己的小圈子,还可能同时属于很多不同的朋友圈。我们认为朋友的朋友都算在一个部落里,于是要请你统计一下,在一个给定社区中,到底有多少个互不相交的部落?并且检…

北京建设工程交易网站官网如何成为百度广告代理商

CSS动画02--卡片旋转3D 介绍代码HTMLCSS css动画02--旋转卡片3D 介绍 当鼠标移动到中间的卡片上会有随着中间的Y轴进行360的旋转&#xff0c;以下是几张图片的介绍&#xff0c;上面是鄙人自己录得一个供大家参考的小视频&#x1f92d; 代码 HTML <!DOCTYPE html>…

typecho做网站百度如何建网站

Shell 变量的输入 Shell变量除了可以直接赋值或脚本传参外&#xff0c;还可以使用read命令从标准输入获得&#xff0c;read为bash内置命令&#xff0c;可以通过help read查看帮助【语法格式】read [参数] [变量名]【常用参数】-p prompt&#xff1a;设置提示信息-t timeout&…

柳江网站开发wordpress文章关键词描述

LITTLESUN本来是在学队列啊&#xff0c;在手动模拟队列的地方发现了结构体这个小怪&#xff0c;为了能赶紧打队列大BOSS就赶紧跑过来填下文件和结构体的坑鸭&#xff01; 转载于:https://www.cnblogs.com/LITTLESUNwl/p/10435877.html

北京网站建设模板表格可以做网站么

目录 1.Shell的概述 2.Shell脚本入门 3.变量 3.1.系统预定义变量 3.2.自定义变量 3.3.特殊变量 4.运算符 5.条件判断 6.流程控制 6.1.if判断 6.2.case语句 6.3.for循环 6.4.while循环 7.read读取控制台输入 8.函数 8.1.系统函数 8.2.自定义函数 9.正则表示式入…

网站开发资格证书网站建设有什么好建议

StringBuilder类常用方法 StringBuilder 是 Java 中常用的字符串缓冲区类&#xff0c;适用于频繁修改字符串的场景。 1. append(): 将指定字符串、字符、布尔值或其他数据类型的表示追加到字符串缓冲区的末尾。 StringBuilder sb new StringBuilder("Hello"); sb.…

企业建站怎么选择做一个微信小程序游戏需要多少钱

1.使用canny算法进行边缘提取 本实验比较简单&#xff0c;基本思路是对原图像进行一个高斯模糊处理&#xff0c;用于去噪&#xff0c;之后转换为灰度图&#xff0c;直接调用cv库中的canny记性边缘提取。若想直接得到彩色边缘&#xff0c;则通过按位与操作&#xff0c;将原始彩色…

东莞企业网站建设推广自建网站的流程

2D转换transform & 2D转换transform平移利用平移百分比优化盒子水平垂直居中 旋转指定2d变换的中心点 transform-origin 缩放2d转换简写 2D转换transform 所谓2D转换&#xff0c;就是在二维坐标系内进行各种操作&#xff0c;包括平移&#xff0c;转动&#xff0c;缩放等等…

网站建设吴中区营销策略有哪几种

文章目录 引言反转单链表题目描述示例&#xff1a;题解思路代码实现&#xff1a; 移除链表元素题目描述&#xff1a;示例思路解析&#xff1a; 链表的中间结点题目描述&#xff1a;示例&#xff1a;思路解析代码实现如下&#xff1a; 链表中倒数第k个结点题目描述示例思路解析&…

房地产公司网站建设ppt东莞招聘网哪个平台比较好

系列文章目录 物流实时数仓&#xff1a;采集通道搭建 物流实时数仓&#xff1a;数仓搭建 文章目录 系列文章目录前言一、IDEA环境准备1.pom.xml2.目录创建 二、代码编写1.log4j.properties2.CreateEnvUtil.java3.KafkaUtil.java4.OdsApp.java 三、代码测试总结 前言 现在我们…

美色商城 网站建设乐陵森洁新能源有限公司电话

系列文章目录 星际争霸之小霸王之小蜜蜂&#xff08;十一&#xff09;--杀杀杀 星际争霸之小霸王之小蜜蜂&#xff08;十&#xff09;--鼠道 星际争霸之小霸王之小蜜蜂&#xff08;九&#xff09;--狂鼠之灾 星际争霸之小霸王之小蜜蜂&#xff08;八&#xff09;--蓝皮鼠和大…

网站改了关键词如何删除网站黑链

一、hiredis源码安装说明 本文创作基于 hiredisv1.2.0版本 1.简介 hiredis是一个用于与Redis交互的C语言客户端库。它提供了一组简单易用的API&#xff0c;使开发人员可以轻松地连接到Redis服务器&#xff0c;并执行各种操作&#xff0c;如设置和获取键值对、执行命令、订阅和…

福州网站建设求职简历莱芜做网站

目录 一&#xff0c;计算机网络背景 二&#xff0c;网络协议初识 三&#xff0c;网络传输基本流程 四&#xff0c;网络中的地址管理 一&#xff0c;计算机网络背景 网络发展 独立模式&#xff0c;计算机之间相互独立&#xff1b;网络互联&#xff0c;多台计算机连接在一起…

上海建设工程施工许可证查询网站智慧团建网站登录密码

一、创建项目 1、创建一个spring-boot的项目 2、创建三个模块file、system、gateway模块 3、file和system分别配置启动信息,并且创建一个简单的控制器 server.port9000 spring.application.namefile server.servlet.context-path/file4、在根目录下引入依赖 <properties&g…

垡头网站建设网站及微站建设合同验收

在没有封面图片的时候&#xff0c;会随机显示出几张色彩不同的风格图片。这样整个效果就好很多&#xff0c;也能减少工作量&#xff0c;毕竟我们没太多时间去找封面图处理。我就想着用Eyoucms能执行PHP的功能&#xff0c;用rand随机下这几张图片出来&#xff0c;我用mt_rand&am…

番禺区大石做网站苏州手机网站设计

我们多次被问到使用Enigma Protector保护软件免遭破解和逆向工程的最佳方法是什么&#xff1f;在这里我将解释保护常用应用程序的技巧是什么。 许多开发人员认为&#xff0c;如果他们只需单击“保护”按钮&#xff0c;保护程序就会自动完成所有操作&#xff0c;无需嵌入额外的…

宝安网站设计项目没有网站怎么推广

功能&#xff1a;ArrayList去除集合中字符串的重复值(字符串的内容相同)&#xff0c;思路&#xff1a;创建新集合方式。 第一种编译运行没问题&#xff0c;第二种写法出错&#xff0c;原因是不可以两次使用it.next()。 错误提示&#xff1a;Exception in thread "main&q…