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

征婚网站上教人做恒指期货网站开发佛山

征婚网站上教人做恒指期货,网站开发佛山,电商网站的二级怎么做,帮别人做网站多少钱引言 fucking-java-concurrency主要解读了在开发过程中常常会遇到的Java并发问题#xff0c;本文主要总结Java的中断原理和应用。 PS: https://github.com/WeiXiao-Hyy/blog整理了后端开发的知识网络#xff0c;欢迎Star#xff01; 操作系统的中断 什么是中断#xff1…引言 fucking-java-concurrency主要解读了在开发过程中常常会遇到的Java并发问题本文主要总结Java的中断原理和应用。 PS: https://github.com/WeiXiao-Hyy/blog整理了后端开发的知识网络欢迎Star 操作系统的中断 什么是中断 中断可以归结为一种事件处理机制通过中断发出一个信号, 用来响应硬件设备请求的一种机制。操作系统收到硬件的中断请求会打断正在执行的进程然后调用内核中的中断处理程序来响应请求。 中断解决了什么样问题 当CPU需要访问外部设备时必须不断地进行轮询和等待外部设备的状态, 这种轮询过程极大地浪费资源。中断机制有效地解决了CPU轮询和忙等待以检查外部设备状态所带来的性能损耗问题。 注意操作系统收到中断请求会打断其他进程的运行所以中断请求的响应程序要尽可能快的执行完这样可以减少对正常进程运行调度地影响。 中断过程 为了解决中断处理程序执行过长和中断丢失的问题将中断过程分成了两个阶段分别为上半部和下半部。 上半部用来快速处理中断一般会暂时关闭中断请求主要负责处理跟硬件紧密相关或者时间敏感的事情。下半部用来延迟处理上半部未完成的工作一般以内核线程的方式运行。 网卡例子 网卡收到网络包后通过DMA方式将接收的数据写入内存接着会通过硬件中断通知内核有新的数据到了。上半部会先禁止网卡中断避免频繁硬中断。内核会触发一个软中断把一些处理比较耗时且复杂的事情交给软中断处理程序去做也就是中断的下半部。 上半部直接处理硬件请求也就是硬中断主要负责耗时短的工作特点是快速执行。下半部分是由内核触发也就是软中断主要负责上半部未完成的工作。 Java的中断 Java中没有办法立即停止一个线程Java提供了一种用于停止线程的协商机制中断。 Java的中断只是一种协商机制, 通过中断并不能直接中断另外一个线程而需要被中断的线程自己处理中断, 通常中断是实现取消的最合理方式。 中断原理 每一个线程都有boolean标识代表着是否有中断请求。线程可以选择在合适的时候处理该中断请求甚至可以完全不理会该请求就像这个线程没有被中断一样。 API MethodDescriptionvoid interrupt()中断线程设置线程的中断位为trueboolean isInterrupted()检查线程的中断标记位true-中断状态false-非中断状态static boolean interrupted()返回当前线程的中断标记位同时清楚中断标记改为false 注意使用静态interrupted方法应该小心因为它会清楚当前线程的中断状态如果在调用interrupted时返回了true那么除非你想屏蔽这个中断否则必须对它进行处理——可以抛出InterruptedException或者通过再次调用interrupt来恢复中断状态 public class InterruptExample implements Runnable {BlockingQueueTask queue;Overridepublic void run() {try {processTask(queue.take());} catch (InterruptedException e) {Thread.currentThread().interrupt(); // 恢复被中断的状态}} }案例讲解 可中断的阻塞 针对线程处于由sleep, wait, join, LinkedBlockingQueue#take等方法调用产生的阻塞状态时调用interrupt方法会抛出异常InterruptedException同时会清除中断标记位自动改成false; LinkedBlockQueue#take() public E take() throws InterruptedException {final E x;final int c;final AtomicInteger count this.count;final ReentrantLock takeLock this.takeLock;takeLock.lockInterruptibly(); // importanttry {while (count.get() 0) {notEmpty.await();}x dequeue();c count.getAndDecrement();if (c 1)notEmpty.signal();} finally {takeLock.unlock();}if (c capacity)signalNotFull();return x; }ReservedStackAccess final void lockInterruptibly() throws InterruptedException {if (Thread.interrupted()) throw new InterruptedException();if (!initialTryLock())acquireInterruptibly(1); }通过中断来取消 根据上述可中断的阻塞操作可以通过中断来取消任务。 import java.math.BigInteger; import java.util.concurrent.BlockingQueue;class PrimeProducer extends Thread {private final BlockingQueueBigInteger queue;PrimeProducer(BlockingQueueBigInteger queue) {this.queue queue;}public void run() {try {BigInteger p BigInteger.ONE;while (!Thread.currentThread().isInterrupted()) {queue.put(p p.nextProbablePrime());}} catch (InterruptedException consumed) {// 允许线程退出}}public void cancel() {interrupt();} }综上 当调用可中断的阻塞函数时有两种实用策略可用于处理InterruptedException。 传递异常使你的方法也成为可中断的阻塞方法。恢复中断状态从而使得调用栈中的上层代码能够对其进行处理。 参考资料 https://www.xiaolincoding.com/os/1_hardware/soft_interrupt.htmlhttps://anyview.fun/2022/11/28https://juejin.cn/post/7296751837340614671#2_6
http://www.dnsts.com.cn/news/247841.html

相关文章:

  • 网站网页设计海报图片江苏网站备案流程
  • 济宁官方网站专业的微网站公司
  • 做刀模网站psd模板怎么做网站
  • 网站如何改造wap百度网页版网址
  • 小伙做钓鱼网站 背警方带走绍兴做网站公司
  • php做视频网站源码房产网站电商怎么做
  • 最新章节 第四百六十二章 花两亿做的网站济南建设网官网首页
  • 白酒 网站模板wordpress的静态页面
  • 做网站用主机wordpress 分享后下载地址
  • 做的网站里面显示乱码怎么解决方法东莞制作网站公司
  • 网站注册备案公司起名字大全免费四个字
  • 建设农产品网络营销网站做宣传可以在哪些网站上发布
  • 企业查询免费网站泰州快速建站模板
  • 公司网站建设会计上怎么处理asp网站开发环境
  • 做网站价格差异很大网址导航怎么删除
  • 建站63年来第一次闭站 北京站辟谣贵州省城乡建设厅网站首页
  • 网站标题图片怎么做Wordpress使用ldap
  • 网站发语音功能如何做东莞网站优化电话
  • 丽水专业网站建设公司信息网官网
  • 网站建设一条龙上海建设银行官网
  • 网站设计方案策划网络营销主要特点有哪些
  • 网站超市源码哪个好移动慧生活app下载
  • 自己做网站广告北京公司如何做网站
  • 深圳市建设行业门户网站张店学校网站建设哪家好
  • 重庆市住房和城乡建设厅网站首页便利的网站建设
  • 百度网站域名佛山网站搭建
  • 沈阳做微网站的公司服务公司标语
  • 合肥公司网站搭建服务商临武网站建设
  • 网站最好服务器零食网站页面模板
  • 网站备案是针对空间还是域名湖南网站seo营销