建立有响应的用户界面

2024-06-03 19:58
文章标签 建立 响应 用户界面

本文主要是介绍建立有响应的用户界面,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

如前所述,使用线程的动机之一就是建立有响应的用户界面。尽管我们要到第 14章才接触

到图形用户界面,你在本章还是可以看到一个基于控制台用户界面的简单例子。下面的例

子有两个版本:一个在全神贯注于运算,所以不能读取控制台输入;另一个把运算放在线

程里单独运行,此时就可以在进行运算的同时监听控制台输入。

 

//: c13:ResponsiveUI.java

// User interface responsiveness.

import com.bruceeckel.simpletest.*;

 

classUnresponsiveUI {

private      volatile        double d = 1;

public UnresponsiveUI()            throws Exception {

while(d> 0)

      d= d + (Math.PI + Math.E) / d;

    System.in.read();           //Never gets here

  }

}

 

public     class ResponsiveUI         extends Thread {

private      static Test monitor =               new Test();

private      static       volatile       double d = 1;

public ResponsiveUI() {

   setDaemon(true);

   start();

  }

public     void run() {

while(true){

      d= d + (Math.PI + Math.E) / d;

    }

  }

public     static       void main(String[] args)               throws

Exception {

//! new UnresponsiveUI(); // Must kill this

process

newResponsiveUI();

   Thread.sleep(300);

    System.in.read();           //'monitor' provides input

    System.out.println(d);              // Shows progress

  }

///:~

 

UnresponsiveUI 在一个无限的 while循环里执行运算,显然程序不可能到达读取控制

台输入的那一行(编译器被欺骗了,相信 while 的条件使得程序能到达读取控制台输入的

那一行)。如果你把建立 UnresponsiveUI的那一行解除注释再运行程序,那么要终止它

的话,就只能杀死(kill)这个进程。

 

要想让程序有响应,就得把计算程序放在 run( )方法中,这样它就能让出处理器给别的程

序。当你按下回车键的时候,你可以看到计算确实在作为后台程序运行,同时还在等待用

户输入(基于测试的原因,控制台输入这一行使用 com.bruceeckel.simpletest.Test

对象自动提交给 System.in.read( )


这篇关于建立有响应的用户界面的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1027965

相关文章

深入理解RxJava:响应式编程的现代方式

在当今的软件开发世界中,异步编程和事件驱动的架构变得越来越重要。RxJava,作为响应式编程(Reactive Programming)的一个流行库,为Java和Android开发者提供了一种强大的方式来处理异步任务和事件流。本文将深入探讨RxJava的核心概念、优势以及如何在实际项目中应用它。 文章目录 💯 什么是RxJava?💯 响应式编程的优势💯 RxJava的核心概念

建立升序链表

题目1181:遍历链表 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2744 解决:1186 题目描述: 建立一个升序链表并遍历输出。 输入: 输入的每个案例中第一行包括1个整数:n(1<=n<=1000),接下来的一行包括n个整数。 输出: 可能有多组测试数据,对于每组数据, 将n个整数建立升序链表,之后遍历链表并输出。 样例输

简单的角色响应鼠标而移动

actor类 //处理移动距离,核心是找到角色坐标在世界坐标的向量的投影(x,y,z),然后在世界坐标中合成,此CC是在地面行走,所以Y轴投影始终置为0; using UnityEngine; using System.Collections; public class actor : MonoBehaviour { public float speed=0.1f; CharacterCo

【内网】ICMP出网ew+pingtunnel组合建立socks5隧道

❤️博客主页: iknow181 🔥系列专栏: 网络安全、 Python、JavaSE、JavaWeb、CCNP 🎉欢迎大家点赞👍收藏⭐评论✍ 通过环境搭建,满足以下条件: 攻击机模拟公网vps地址,WEB边界服务器(Windows Server 2008)模拟公司对外提供Web服务的机器,该机器可以通内网,同时向公网提供服务。内网同网段存在一台Windows内网服务

【IDEA】建立多个子模块依赖于一个父模块(maven)

第一步,建立父模块(在IDEA中就是工程) 第二步,选中父模块(也就是工程)右键New Module建立子模块 勾选创建模板原型并一般选择 maven-archetype-quickstart,当创建web模块时选择 maven-archetype-webapp 其他子模块都是类似这样创建~ packaging打包类型有: jar,默认类型warejbea

【2024全国大学生数学建模竞赛】B题 模型建立与求解(含代码与论文)

目录 1问题重述1.1问题背景1.2研究意义1.3具体问题 2总体分析3模型假设4符号说明(等四问全部更新完再写)5模型的建立与求解5.1问题一模型的建立与求解5.1.1问题的具体分析5.1.2模型的准备 目前B题第一问的详细求解过程以及对应论文部分已经完成! - 晚上7-8点之前第二问完成 - 明天中文之前全部写完 按照提交论文的格式进行撰写!完整版请看文章最后!

影响画布微信小程序canvas及skyline和webview用户界面布局的关键流程

影响微信小程序画布canvas及skyline和webview用户界面布局的关键流程 目录 影响微信小程序画布canvas及skyline和webview用户界面布局的关键流程 一、微信小程序canvas开发流程 1.1、官方指南 1.2、客制化开发 第一步:在 WXML 中添加 canvas 组件 第二步:获取 Canvas 对象和渲染上下文 第三步 画布#ID选择器执行回调——

【UE4源代码观察】手动建立一个使用UBT进行编译的空白工程

我想观察UE4是怎么编译的,于是查阅官方文档,了解到UE4有一套自己的编译工具:UnrealBuildTool,简称UBT。关于UBT的官方文档参阅:虚幻编译工具。我想尝试自己手动建立一个使用UBT进行编译的空白工程。不过首先,先了解下UBT的编译流程中一些文件所扮演的角色 UBT的编译流程中一些文件所扮演的角色 模块 每个模块都由一个 .build.cs 文件声明,它存储在 Source

《响应式 Web 设计:纯 HTML 和 CSS 的实现技巧》

一、引言 在当今数字化时代,人们使用各种不同的设备访问网页,包括台式电脑、笔记本电脑、平板电脑和智能手机等。为了确保网页在不同设备上都能提供良好的用户体验,响应式 Web 设计变得至关重要。响应式 Web 设计是一种能够根据设备屏幕大小和分辨率自动调整布局和样式的设计方法。本文将深入探讨如何使用纯 HTML 和 CSS 实现响应式 Web 设计,分享一些实用的技巧和最佳实践。 二、响应

vue3 响应式 API:shallowRef()和shallowReactive()

shallowRef() shallowRef()是一个用于创建浅层响应式引用的函数。它创建一个响应式数据,但只对顶层属性进行响应式处理。 特点: 只跟踪引用值的变化,不关心值内部的属性变化。 <template><div>{{ shallowRefObj }}</div><button @click="changeShallowRefObj">直接修改shallowRefObj</butt