javajava 添加一个线程、创建响应的用户界面 。

演示示例代码

来自thinking in java 4 21章  部分的代码  夹21.2.11

thinking in java 4免费下载:http://download.csdn.net/detail/liangrui1988/7580155

package org.rui.thread.concurrent;/*** 增加一个线程* 一个线程能够在其它线程之上调用join()方法,其效果是等待一段时间直到第二个线程结束才继续运行。

* 假设某个线程在还有一个线程T上调用t.join() 此线程将被挂起,直到目标线程t结束才恢复(即 t.isAlive()返回为假) * @author lenovo * */ class Sleeper extends Thread { private int duration; public Sleeper(String name,int sleepTime) { super(name); duration=sleepTime; start(); } /** * Sleeper 它要休眠一段时间 */ @Override public void run() { try { sleep(duration); } catch (Exception e) { //依据 isInterrupted的返回值报告这个中断,当还有一个线程在该线程上调用interrupt()时, //将给该线程设定一个标志,表明该线程已经中断,然而。异常被捕获时将清理这个标志。所以在catch子句中, //在异常被捕获的时候这个标志总是为假。除异常之外,这个标志还可有于其它情况,比方线程可能会检查当中断状态 System.out.println(getName()+" was interrupted."+"isInterrupted() "+ isInterrupted()); return; } System.out.println(getName()+" has awakened"); } } // class Joiner extends Thread { private Sleeper sleeper; public Joiner(String name,Sleeper sleeper) { super(name); this.sleeper=sleeper; start(); } @Override public void run() { /** * Joiner 线程将通过在sleeper对象上调用join方法来等待sleeper醒来.在main里面 * 每一个sleeper都有一个joiner,这能够在输出中发现,假设sleeper被 中断或者是正常结束。 * joiner将和sleeper一同结束 * */ try { sleeper.join(); } catch (InterruptedException e) { System.out.println("interrupted"); } System.out.println(getName()+" join completed"); } } // public class Joining { public static void main(String[] args) { //线程1 Sleeper sleepy=new Sleeper("Sleepy",1500), grumpy=new Sleeper("Grumpy",1500); // Joiner Dopey=new Joiner("Dopey",sleepy), doc=new Joiner("doc",grumpy); grumpy.interrupt(); } } /** * 注意,java SE5的java.util.concurrent类库包括诸如CyclicBarrier这种工具。 * 它们可能比最初的线程类库中的join更加合适 * output: Grumpywas interrupted.isInterrupted() false doc join completed Sleepy has awakened Dopey join completed */

package org.rui.thread.concurrent;
/*** 创建有响应的用户界面* 一个关注于运算,所以不能读取控制台输入,还有一个把运算放在任务里单独执行,* 此时就能够在进行运算的同一时候监听控制台输入* @author lenovo**///无反应的
class UnresponsiveUI
{private volatile double d=1;public UnresponsiveUI()throws Exception{while(d>0)d=d+(Math.PI+Math.E);System.in.read();// 永远不会在这里}}public class ResponsiveUI extends Thread {private volatile static double d=1;public ResponsiveUI(){setDaemon(true);start();}@Overridepublic void run() {//无限循环,显然程序 不可能到达读取控制台输入的那一行(编译器被欺骗了,相信while的条件使得程序能到达读取控制台输入的那一行)。//假设把建立UnresponsiveUI的那一行的凝视解除掉再执行程序,那么要终止它的话,就仅仅能杀死这个进程while(true)d=d+(Math.PI+Math.E)/d;}public static void main(String[] args) throws Exception {//4new UnresponsiveUI();// 必须杀了这个线程new ResponsiveUI();System.in.read();System.out.println(d);//显示上传进度/*** 要想让程序有响应,就得把计算方案run该方法。因此,它允许处理器等程序。

* 当您按下‘进’当健康。计算确实可以看到该项目的实施为背景。同时还在等待用户输入。 */ } } /** input: hello output: 在基于停留时间输出: 68130.17629894095 */

转载于:https://www.cnblogs.com/zfyouxi/p/4841199.html

java 添加一个线程、创建响应的用户界面 。 演示示例代码相关推荐

  1. java 用户线程如何修改界面内容_java 加入一个线程、创建有响应的用户界面 。 示例代码...

    javajava 加入一个线程.创建有响应的用户界面 . 示例代码 来自thinking in java 4 21章 部分代码 目录21.2.11 package org.rui.thread.con ...

  2. Java中一个线程只有六个状态。至于阻塞、可运行、挂起状态都是人们为了便于理解,自己加上去的。...

    java中,线程的状态使用一个枚举类型来描述的.这个枚举一共有6个值: NEW(新建).RUNNABLE(运行).BLOCKED(锁池).TIMED_WAITING(定时等待).WAITING(等待) ...

  3. java一竖,java 添加一个竖滚动条

    java 添加一个竖滚动条 关注:178  答案:2  mip版 解决时间 2021-02-04 23:38 提问者断念劫难 2021-02-04 19:48 只要一个竖的滚动条 还有它的单机事件 最 ...

  4. 安卓应用安全指南 4.3.1 创建/使用内容供应器 示例代码

    4.3.1 创建/使用内容供应器 示例代码 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY-NC ...

  5. java printwriter 文件,java使用PrintWriter写文件,javaprintwriter写,下面示例代码演示使用Pr...

    java使用PrintWriter写文件,javaprintwriter写,下面示例代码演示使用Pr 下面示例代码演示使用PrintWriter方法写文件. PrintWriter的构造函数接受Fil ...

  6. Java四种线程创建的思路

    一.哪四种 传统的是继承thread类和实现runnable接口,java5以后又有实现callable接口和java的线程池获得. callable相比于runnable,多了返回值,抛出了异常. ...

  7. java中一个线程最小优先数_Java线程的优先级

    Java线程可以有优先级的设定,高优先级的线程比低优先级的线程有更高的几率得到执行(不完全正确,请参考下面的"线程优先级的问题"). 记住当线程的优先级没有指定时,所有线程都携带普 ...

  8. java new一个线程执行完后会自动销毁吗_Java基础总结,超级全的面试题

    1. static关键字是什么意思?Java 中是否可以覆盖(override)一个 private 或者是 static 的方法?是否可以在 static 环境中访问非static 变量? stat ...

  9. java多线程之线程创建和状态

    一.概述 1.上下文切换 即使是单核处理器也支持多线程执行代码,CPU通过给每个线程分配CPU时间片来实现 这个机制.时间片是CPU分配给各个线程的时间,因为时间片非常短,所以CPU通过不停地切 换线 ...

最新文章

  1. 《Adobe Acrobat DC经典教程》—第1章1.11节在阅读模式下查看PDF文件
  2. 配置oracle 11g环境,oracle 11g 的安装环境的配置
  3. Win10上线摸鱼神器,已经被玩疯了!
  4. 知道坐标matlab三维作图,已知点坐标,要求根据坐标作出三维曲面图
  5. 查询已有链表的hashmap_原创 | 面试不再慌,看完这篇保证让你写HashMap跟玩一样...
  6. 八皇后(洛谷-P1219)
  7. ORA-12011+ORA-06512–job执行失败问题
  8. 为Python终端提供持久性历史记录
  9. itextpdf 实现html转pdf中中文及图片base64的解决方法
  10. 夯实Java基础(二)——面向对象之封装
  11. JS实现Sql语句格式化效果
  12. Nexus下载安装及对接
  13. 大数据工程师成长之路
  14. 科来网络分析系统网络故障分析方法
  15. js 百分比计算公式,图形填充的百分比
  16. anaconda安装后打不开,卡在loading application
  17. 三态内容寻址存储器(TCAM)工作原理
  18. Pak散包查看器(SimpleViewPak)
  19. python之信用卡ATM(第五天)
  20. 佳明手表大数据应用_Garmin 佳明跑步手表测量的最大摄氧量数据靠谱吗?

热门文章

  1. mysql 字符串替换:处理历史稿件中的图片路径
  2. 【sprinb-boot】lib分离打包
  3. 圆柱属于能滚动的物体吗_一户多宅属于违建吗?怎么能拥有多一点的宅基地
  4. linux 页面内容输出,Node.js 一个简单的页面输出
  5. 重装机兵java_重装机兵之机甲咆哮
  6. rust怎么拆自己石墙_房屋征拆:遭遇非法强拆怎么办?如何依法维护自己的权益...
  7. 模型部署到移动端_TensorFlow Lite 自然语言处理模型的最新功能,助力设备端 NLP 部署...
  8. delphi if多个条件_屡试不爽!使用策略模式代替多个if条件语句
  9. 利用pickle保存模型
  10. GCN(一)数据集介绍