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

泰州建设局网站质监站档案馆网站建设

泰州建设局网站质监站,档案馆网站建设,企业网站 设,网站建设出现401zk ui异步UI更新非常有用#xff0c;因为它们通常可以提高响应性#xff0c;可用性和用户界面的总体感觉。 我将在这里重点介绍ZK框架#xff0c;但是通常#xff0c;相同的原理也适用于桌面UI#xff08;Swing#xff0c;SWT#xff09;。 长时间运行的处理 有时您可能… zk ui 异步UI更新非常有用因为它们通常可以提高响应性可用性和用户界面的总体感觉。 我将在这里重点介绍ZK框架但是通常相同的原理也适用于桌面UISwingSWT。 长时间运行的处理 有时您可能需要进行数据库查询或者需要很长时间才能进行外部Web服务调用。 通常这些作业是同步的因此基本上在代码中有一个特定的点系统将必须等待结果并阻塞运行代码的线程。 如果最终在UI线程中运行了这样的代码则通常会完全阻塞UI。 实时更新 有时您不预先知道应更新UI中的某些内容的确切时间。 例如您可能有一个可视仪表用于显示应用程序中的用户数量。 当新用户进入应用程序时应尽快更新当前用户的UI以反映新用户数。 您可以使用基于计时器的机制来连续检查用户数量是否已更改但是如果同时存在的用户过多则即使UI中没有实际更新的内容连续检查也将导致非常重的负载。 基本概念 让我们首先摘录此博客文章的标题“异步UI更新和后台处理” 后台处理 在长时间运行的处理用例中减少UI阻塞的最明显方法是将昂贵的处理从UI线程转移到某些后台线程。 能够理解哪种线程将在应用程序的不同部分中运行代码非常重要。 例如在ZK应用程序中大多数代码由servlet线程执行这些线程基本上是servlet等效于UI线程的世界。 为了在某​​些后台线程中执行代码我们需要一个线程池。 最简单的方法是使用JDK5中引入的java.util.concurrent.ExecutorService。 我们可以将Runnable对象推送到ExecutorService因此我们基本上是在要求ExecutorService在某些后台线程中运行特定的代码块。 绝对关键的是使用ThreadLocals的框架会遇到这种方法的问题因为在servlet线程中设置的ThreadLocals在后台线程中将不可见。 一个例子是Spring Security默认情况下使用ThreadLocal来存储安全上下文用户身份其他东西。 异步UI更新 在这种情况下异步UI更新意味着什么 基本上这个想法是一旦我们有了一些要在UI中呈现的信息我们就会通知UI新数据异步而不是直接在后台线程中更新UI同步。 我们无法事先知道新信息何时可用因此我们无法从客户端请求信息除非我们使用昂贵的轮询。 服务器推送ZK 使用ZK基本上我们可以使用两种不同的方法来在后台线程获取新信息后更新UI。 名称“服务器推送”来自以下事实服务器具有一些必须推送到客户端的新数据而不是典型的工作流程客户端向服务器询问信息。 首先您可以通过使用Executions.activate / deactivate抢占对桌面的独占访问权限来进行同步更新。 我个人不鼓励这样做因为一旦您拥有独占访问权UI线程将不得不等待直到停用桌面。 这就是为什么我在这篇博客文章中根本不会介绍这种方法的原因。 另一方面异步更新是通过使用Executions.schedule完成的它符合常规事件处理的Event / EventListener模型。 这个想法是我们可以将普通的ZK Event对象推送到EventListeners客户端将被告知这些事件。 之后ZK使用Java脚本执行正常的AJAX请求事件将由EventListeners处理。 这意味着如果我们使用异步更新则所有实际的事件处理将由Servlet线程完成并且所有ThreadLocals照常可用。 这使编程模型非常简单因为您只需要普通的事件侦听器方法而无需复杂的并发编程。 这是一个小例子 public class TestComposer extends GenericForwardComposer {private Textbox search;public void onClick$startButton() {if (desktop.isServerPushEnabled()) {desktop.enableServerPush(true);}final String searchString search.getValue();final EventListener el this; // All GenericForwardComposers are also EventListeners// Dont do this in a real-world application. Use thread pools instead.Thread backgroundThread new Thread() {public void run() {// In this part of code the ThreadLocals ARE NOT available// You must NOT touch any ZK related things (e.g. components, desktops)// If you need some information from ZK, you need to get them before this code// For example here Ive read searchString from a textbox, so I can use the searchString variable without problemsString result ... // Retrieve the result from somewhereExecutions.schedule(desktop, el, new Event(onNewData, null, result));}};backgroundThread.start();}public void onNewData(Event event) {// In this part of code the ThreadLocals ARE availableString result (String) event.getData();// Do something with result. You can touch any ZK stuff freely, just like when a normal event is posted.} } 在下一部分中我将向您展示如何使用JDK5 ExecutorServices运行任务而无需手动创建线程。 如果您真的想了解ZK服务器推送还应该阅读相关的ZK文档 。 祝您编程愉快别忘了分享 参考 Advanced ZK异步UI更新和后台处理– Jawsy Solutions技术博客博客上的JCG合作伙伴 Joonas Javanainen的第1部分 。 翻译自: https://www.javacodegeeks.com/2012/09/advanced-zk-asynchronous-ui-updates-and.htmlzk ui
http://www.zqtcl.cn/news/857378/

相关文章:

  • 网站建设公司不赚钱ui设计软件培训学校
  • 网站项目策划书模板wordpress修改模版
  • 房地产手机网站模板电脑建立网站
  • 网站自适应手机代码网络服务机构的网站
  • 系统网站重庆智能建站模板
  • wordpress适合优化吗宝塔 wordpress优化
  • 怎么利用网站做外链接怎样做公司网站介绍
  • 广州网站优化渠道木门网站模板
  • 手机网站菜单设计wordpress加联系方式
  • 网站管理助手怎么使用多种郑州网站建设
  • 汉中网站建设费用外贸网站服务商
  • 苏宿工业园区网站建设成功案例色流网站如何做
  • 北沙滩网站建设公司电子商务网站建设管理论文
  • 公司备案证查询网站查询系统网页设计html代码大全及含义
  • 成都开发网站建设做网站一般会出现的问题
  • 企业网站设计布局方式如何在社交网站上做视频推广方案
  • 惠城网站建设服务做1688网站需要懂英语吗
  • 请人做网站要多少钱搜索引擎优化概述
  • 郑州中森网站建设免费网站app生成软件
  • 做诚信通网站seo新手快速入门
  • 做网站怎么去找客户带会员中心WordPress免费主题
  • 网站建设资费安平县护栏网站建设
  • 做视频网站侵权吗个体户网站备案
  • 苏州姑苏区建设局网站智慧团建登录官网手机版
  • 如何搭建一个视频网站广告制作方案
  • 网站策划ps苏州建站公司速找苏州聚尚网络
  • 网站备案 关闭客户制作网站时的问题
  • 项目网站分析推荐做ppt照片的网站
  • wordpress注明网站网站建设需要什么手续
  • 厦门过路费网站福建省建设执业资格注册中心网站