【问题标题】:JavaFX : How to process a webview in a non application threadJavaFX:如何在非应用程序线程中处理 webview
【发布时间】:2016-03-17 08:34:36
【问题描述】:

我有一个 JavaFX 应用程序,它在同一个窗口中包含一个 WebView 以及其他 JavaFx 视图。 WebView 打开一个指向消耗大量 CPU 资源的 NodeJs webapp 的 URL。

由于 WebView 的这种资源消耗,其他 JavaFX 视图工作缓慢。

对于我们的应用程序,我们有一个非常强大的系统,处理器中有 12 个虚拟线程。

所以,我需要将 WebView 处理转移到另一个线程,这样它就不会影响其他 JavaFX 视图的行为。有什么方法可以实现吗?

【问题讨论】:

    标签: node.js multithreading performance javafx webview


    【解决方案1】:

    你不能这样做。 JavaFX 每个 JVM 进程(java 调用)有一个应用程序线程,并且 WebView API 调用必须在 JavaFX 应用程序线程上处理。

    请注意,在内部,WebView 使用 WebKit,它可能有自己的线程实现来支持像 Web Workers 这样的 html5 内容,但是当您在 Java API 级别对 WebView 进行编程时,这些都是隐藏的。因此,除非您明确地对 JavaScript 进行编程以使用它,否则这不会有太大的不同。我猜如果您的 NodeJS webapp 针对其他浏览器进行了优化,它可能会在 WebView 中正常工作,您只需要进行基准测试,我猜您已经做了并且发现了一些想要的东西。您可能需要花费一些精力来优化您拥有的 NodeJS webapp。

    实现与您在问题中所要求的内容类似的唯一方法是启动一个单独的进程,即在新的 JVM 进程中包含您的 WebView 实例的新 JavaFX 应用程序。

    【讨论】:

      猜你喜欢
      • 2015-09-18
      • 2016-08-17
      • 1970-01-01
      • 2020-04-30
      • 2013-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多