如何优化外贸网站以提升用户体验并保持软件更新?

摘要:网站更新维护页面,外贸网站建设软件,时政热点新闻,乐清做网站建设【JUC2022】第三章 线程中断与 LockSupport 文章目录【JUC2022】第三章 线程中断与 LockSupport一、线程中断1.什么是中断机制2.中断 API
网站更新维护页面,外贸网站建设软件,时政热点新闻,乐清做网站建设【JUC2022】第三章 线程中断与 LockSupport 文章目录【JUC2022】第三章 线程中断与 LockSupport一、线程中断1.什么是中断机制2.中断 API3.代码实现4.Thread.sleep()二、LockSupport1.什么是 LockSupport2.代码实现3.总结一、线程中断 1.什么是中断机制 首先#xff0c;一个…【JUC2022】第三章 线程中断与 LockSupport 文章目录【JUC2022】第三章 线程中断与 LockSupport一、线程中断1.什么是中断机制2.中断 API3.代码实现4.Thread.sleep()二、LockSupport1.什么是 LockSupport2.代码实现3.总结一、线程中断 1.什么是中断机制 首先一个线程不应该由其他线程来强制中断或停止而是应该由线程自己停止自己来决定自己的命运。所以Thread.stopThread.suspendThread.resume 都已经被废弃了 其次在 Java 中没有办法立即停止一条线程然而停止线程却尤为重要如取消一个耗时操作。因此Java 提供了一种用于停止线程的协商机制——中断也即中断标识协商机制 中断只是一种协商机制Java 没有给中断增加任何语法中断的过程完全需要程序员自己实现 若要中断一个线程需要手动调用该线程的 interrupt 方法该方法也仅仅是将线程对象的中断标识设成 true。接着你需要自己写代码不断地检测当前线程的标识位如果为 true表示别的线程请求这条线程中断此时究竟该做什么需要自己写代码实现 每个线程对象中都有一个中断标识位用于表示线程是否被中断。该标识位为 true 表示中断为 false 表示未中断。通过调用线程对象的 interrupt 方法将该线程的标识位设置为 true可以在别的线程中调用也可以在自己的线程中调用 2.中断 API public void interrupt() 设置线程的状态为 true发起一个协商而不会立刻停止线程 如果该线程已经执行了 wait()、join()、sleep()方法此时其他线程调用该线程的 interrupt() 方法那么该线程将立即退出阻塞状态并抛出 InterruptedException public static boolean interrupted() 返回当前线程的中断状态并将当前线程的中断标识位重新设置为 false 这里可能会有一点抽象读者朋友可能会疑惑为什么要重新设置中断标识位为 false。我觉得这只是一个表述问题因为这个方法的主要功能就是将线程的中断标识位设置为 false而不是返回中断状态。我们会发现如果没有这个方法我们就没有其他方法去重置线程的中断标识位了public boolean isInterrupted() 返回当前线程的中断标识位 3.代码实现 package com.sisyphus.Interrupt;import java.util.concurrent.TimeUnit;public class InterruptDemo {public static void main(String[] args) {Thread t1 new Thread(()-{while(true){if (Thread.currentThread().isInterrupted()){System.out.println(Thread.currentThread().getName() 线程被中断);break;}System.out.println(线程运行中...);}},t1);t1.start();//暂停try{TimeUnit.MILLISECONDS.sleep(20);}catch (InterruptedException e){e.printStackTrace();}new Thread(()-{t1.interrupt();},t2).start();} }4.Thread.sleep() 为什么 Thread.sleep() 要抛中断异常 为了让线程具备感知中断能力。不能让线程无感知地一直睡眠总会有需要“叫醒”它的突发情况 为什么 interrupt() “叫醒了”线程后要清除中断标志位 为了让线程能够继续执行本该执行的代码。
阅读全文