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

推广型网站建设机构网页设计与网站开发的实践目的

推广型网站建设机构,网页设计与网站开发的实践目的,wordpress 导入网站模板,wordpress文章页面修改一、Hook 线程介绍通常情况下#xff0c;我们可以向应用程序注入一个或多个 Hook (钩子) 线程#xff0c;这样#xff0c;在程序即将退出的时候#xff0c;也就是 JVM 程序即将退出的时候#xff0c;Hook 线程就会被启动执行。先看一段示例代码#xff1a;①#xff1a;…一、Hook 线程介绍通常情况下我们可以向应用程序注入一个或多个 Hook (钩子) 线程这样在程序即将退出的时候也就是 JVM 程序即将退出的时候Hook 线程就会被启动执行。先看一段示例代码①为应用程序注入一个钩子(Hook)线程线程中打印了相关日志包括正在运行以及退出的日志②再次注入一个同样逻辑的钩子(Hook)线程③主线程执行结束打印日志运行这段代码来验证一下从打印日志看到当主线程执行结束也就是 JVM 进程即将退出的时候注入的两个 Hook 线程都被启动并打印相关日志。二、Hook 线程的应用场景注意事项2.1 应用场景上面我们已经知道了 Hook 线程能够在 JVM 程序退出的时候被启动且执行那么我们能够通过这种特性做点什么呢罗列一些常见应用场景防止程序重复执行具体实现可以在程序启动时校验是否已经生成 lock 文件如果已经生成则退出程序如果未生成则生成 lock 文件程序正常执行最后再注入 Hook 线程这样在 JVM 退出的时候线程中再将 lock 文件删除掉PS: 这种防止程序重复执行的策略也被应用于 Mysql 服务器zookeeper, kafka 等系统中。Hook 线程中也可以执行一些资源释放的操作比如关闭数据库连接Socket 连接等。2.2 注意事项Hook 线程只有在正确接收到退出信号时才能被正确执行如果你是通过 kill -9这种方式强制杀死的进程那么抱歉进程是不会去执行 Hook 线程的为什么呢你想啊它自己都被强制干掉了哪里还管的上别人呢请不要在 Hook 线程中执行一些耗时的操作这样会导致程序长时间不能退出。三、Hook 线程防应用重启实战针对上面防应用重启的场景利用 Hook 线程我们来实战一下贴上代码import java.io.File;import java.io.IOException;import java.util.concurrent.TimeUnit;/*** author 小泽java* date 2019/4/15* time 下午3:56* discription**/public class PreventDuplicated {/** .lock 文件存放路径 */private static final String LOCK_FILE_PATH ./;/** .lock 文件名称 */private static final String LOCK_FILE_NAME .lock;public static void main(String[] args) {// 校验 .lock 文件是否已经存在checkLockFile();// 注入 Hook 线程addShutdownHook();// 模拟程序一直运行for (;;) {try {TimeUnit.SECONDS.sleep(1);System.out.println(The program is running ...);} catch (InterruptedException e) {e.printStackTrace();}}}/*** 注入 Hook 线程*/private static void addShutdownHook() {Runtime.getRuntime().addShutdownHook(new Thread(() - {// 接受到了退出信号System.out.println(The program received kill signal.);// 删除 .lock 文件deleteLockFile();}));}/*** 校验 .lock 文件是否已经存在*/private static void checkLockFile() {if (isLockFileExisted()) {// .lock 文件已存在, 抛出异常, 退出程序throw new RuntimeException(The program already running.);}// 不存在则创建 .lock 文件createLockFile();}/*** 创建 .lock 文件*/private static void createLockFile() {File file new File(LOCK_FILE_PATH LOCK_FILE_NAME);try {file.createNewFile();} catch (IOException e) {e.printStackTrace();}}/*** .lock 文件 是否存在* return*/private static boolean isLockFileExisted() {File file new File(LOCK_FILE_PATH LOCK_FILE_NAME);return file.exists();}/*** 删除 .lock 文件*/private static void deleteLockFile() {File file new File(LOCK_FILE_PATH LOCK_FILE_NAME);file.delete();}}运行程序控制台输出如下程序一直运行中再来看下 .lock 文件是否生成文件生成成功接下来我们再次运行程序看看是否能够重复启动可以看到无法重复运行程序且抛出了 The program already running. 的运行时异常。接下来通过 kill pid 或者 kill -l pid 命令来结束进程程序在即将退出的时候启动了 Hook 线程在看下 .lock 文件是否已被删除到此Hook 线程代码实战部分结束了。
http://www.yutouwan.com/news/298737/

相关文章:

  • dedecms 安防监控行业网站模板濮阳新闻综合频道回看
  • 成都网站建设哪家唐山哪里有建设网站的
  • 世纪购网站开发招聘国家重大项目建设库网站打不开
  • 亚马逊建站服务前端前景怎么样
  • 企业网站托管费用适合推广的网站有哪些
  • 网站建设专题页面wordpress 多层分类
  • 深圳网站建设怎样做网站注册理由
  • 哪个网站用户体验较好建设企业网站的原因
  • 柯林wap建站程序个人版c 可以做网站吗
  • 中山市建设信息网站网站推广的策略方法
  • 佛山找企业的网站wordpress is ssl
  • 屏蔽阿里云网站网上书城网站开发背景
  • 武安市网站建设百度搜图片功能
  • 网站建设一般分为几个步骤微网站开发协议
  • 安福网站制作苏州知名网站建设开发
  • 网站建设技术公司排名wordpress做文学网
  • 龙华网站建设全包瑞安网站设计
  • 大港建站公司手机自己制作表白网站
  • 佛山医疗网站建设中山市网站制作
  • 东莞网络营销外包杭州网站优化体验
  • 网站建设开发的条件博客网站首页设计
  • 网站模板样式修改app软件开发公司哪家好
  • 茂名网站建设公司科学小制作小发明
  • 建设企业网站登录901wordpress 站内搜索 慢
  • 济宁网站建设那家好网站开发好就业吗
  • 淘宝客网站开源it运维需要具备哪些能力
  • 网站二级菜单是什么意思专业的seo搜索引擎优化培训
  • 做推广适合哪些网站小规模公司怎么注销
  • 网站内容的排版布局58同城深圳网站建设
  • 烟台网站建设比较大的如何搭建英文网站