知识大全 获取java线程中信息的两种方法[3]

Posted

篇首语:种子牢记着雨滴献身的叮嘱,增强了冒尖的勇气。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 获取java线程中信息的两种方法[3]相关的知识,希望对你有一定的参考价值。

    二 回调

    轮询方法最大的特点是主类Main不断询问线程类是否结束 这实际上大量浪费了运行时间 特别是当线程特别多的时候 因此如果反过来在线程结束时 由线程自己告诉主类Main线程已经结束 然后Main再获取并输出str的值 这样就避免了轮询方法所带来的不必要的系统开销问题

    在具体的实现过程中 线程可以在结束时通过调用主类中的一个方法来实现告知功能 这种方法叫做回调 这样主类Main就可以在等待线程结束时休息 也就不会占用运行线程的时间 下面是修改后的Main类

 public class Main  public Main()     /**   * @param args the mand line arguments   */  public static void main(String[] args)     // TODO code application logic here    ReturnThreadInfo returnThreadInfo = new ReturnThreadInfo();    returnThreadInfo start();    public static void receiveStr(String str)    System out println(str);  

    相比于前面 我们在Main类中添加了一个静态方法receiveStr(String str) 该方法是供线程结束之前调用 通过参数str将要返回的线程信息返回给Main类并输出显示出来 下面是修改后的ReturnThreadInfo类 该类在线程结束前回调了Main receiveStr方法 通知线程已结束

 package threadtest ;/**** @author shi mingxiang*/public class ReturnThreadInfo extends Thread   private String str;  public ReturnThreadInfo()     this str = Hello ;    public void run()      this str = Hello World! ;   Main receiveStr(str); //回调receiveStr方法  

    如果有很多个对象关心线程的返回的信息 线程可以保存一个回调对象列表 某个对象可以通过已经定义的一个对象将自己添加到列表中 表示自己对这些信息的关注 如果有多个类的实例关心这些信息 也可以定义一个interface 在interface中声名回调方法 然后这些类都实现这个接口 其实这是典型的java处理事件的方法 这么做可以使得回调更灵活 可以处理涉及更多线程 对象和类的情况 稍后会给出这种模仿事件处理模型的回调的实现方法

cha138/Article/program/Java/gj/201311/27712

相关参考

知识大全 获取java线程中信息的两种方法[2]

   以上是一个多数熟悉单线程编程的人在第一反应下给出的实现方法但是该类在运行的时候输出的结果却不是期望的HelloWorld!而是Hello这是由于线程的竞争条件导致的

知识大全 Java获取客户端真实IP地址的两种方法

Java获取客户端真实IP地址的两种方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在JSP

知识大全 介绍java 产生随机数的两种方式

   在java中我们可以通过两种方式来获取随机数(generatingarandomnumber)一种是大家熟悉的javalangMathRandom()静态方法另一种

知识大全 在Java程序中采用线程获取优异性能

在Java程序中采用线程获取优异性能  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  什么是线程?

知识大全 java读取网站内容的两种方法

  HttpClient  利用apache的虚拟客户端包获取某个地址的内容 importjavaioUnsupportedEncodingException;  importjavauti

知识大全 php获取数组中重复数据的两种方法

  ()利用php提供的函数array_unique和array_diff_assoc来实现复制代码代码如下:<?phpfunctionFetchRepeatMemberInArray($arr

知识大全 C#多线程操作控件的两种安全方式

C#多线程操作控件的两种安全方式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  实现的功能是  

知识大全 开发JAVA编程中字符串分割的两种方法

开发JAVA编程中字符串分割的两种方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  方法:采用

知识大全 java线程简介(其它线程API详细信息)

java线程简介(其它线程API详细信息)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  wai

知识大全 java中super的两种用法

  通过用static来定义方法或成员为我们编程提供了某种便利从某种程度上可以说它类似于C语言中的全局函数和全局变量  但是并不是说有了这种便利你便可以随处使用如果那样的话你便需要认真考虑一下自己是否