当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:12:00  来源:本站整理

诊断Java代码:孤线程(Orphaned Thread)错误情势[Java编程]

赞助商链接



  本文“诊断Java代码:孤线程(Orphaned Thread)错误情势[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

在多线程代码中,利用驱动别的线程所负责的行动的单个主线程是常见的.这个主线程发送消息,普通是通过把它们放到一个行列中,然后别的线程处理这些消息.但是假如主线程抛出一个非常,那么剩余的线程会持续运行,等候更多输入到该行列,招致程序冻结.在诊断 Java 代码的这一部份中,专职 Java 开辟者兼兼职捉虫者 Eric Allen 谈论检测、修复和避免这一错误情势.

用多线程编写代码对程序员大有好处.多线程能使编程(和程序)举行得快得多,并且代码能有效得多地利用资源.但是,跟生活中的很多事情一样,多线程也存在缺陷.因为多线程代码天生是非肯定性的,呈现错误的大概性大得多.并且,确切发生的的错误很难重现,因此也更难办理.

孤线程情势

Java 编程语言为多线程代码供应了丰富的支持,包含一项分外有效的功效:可以在一个线程中抛出一个非常而不影响别的线程.但这项功效会招致很多难以跟踪的错误.

从某个线程的崩溃中恢复过来是有意义,在此种情形下,这种本领能增添程序的结实性级别.但是,它也使我们难以判断这些线程之一在什么时刻抛出了一个非常.因为剩余的线程将持续运行,所以程序会表现出无呼应或冻结程序的征象.对线程之间频繁通信的程序而言特别如此.

考虑清单 1 所示的示例,此中的一对线程通过生产者-消费者模子举行通信.

清单 1. 一个简单的、多线程的消费者-生产者程序

public class Server extends Thread {
  Client client;
  int counter;
  public Server(Client _client) {
   this.client = _client;
   this.counter = 0;
  }
  public void run() {
   while (counter < 10) {
    this.client.queue.addElement(new Integer(counter));
    counter++;
   }
   throw new RuntimeException("counter >= 10");
  }
  public static void main(String[] args) {
   Client c = new Client();
   Server s = new Server(c);
   c.start();
   s.start();
  }
}
class Client extends Thread {
  Vector queue;
  public Client() {
   this.queue = new Vector();
  }
  public void run() {
   while (true) {
    if (! (queue.size() == 0)) {
     processNextElement();
    }
   }
  }
  private void processNextElement() {
   Object next = queue.elementAt(0);
   queue.removeElementAt(0);
   System.out.println(next);
  }
}


  以上是“诊断Java代码:孤线程(Orphaned Thread)错误情势[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 诊断Java代码 - 筹划"可测试的"操纵程序
  • <b>诊断Java代码: 臆想实现错误情势,第2部份</b>
  • 诊断Java代码: 筹划可扩大的操纵程序,第2部份
  • 诊断Java代码::Split Cleaner错误情势
  • 诊断Java代码: Fictitious Implementation错误情势,第1部份
  • 诊断Java代码:筹划可扩大的操纵程序,第1部份
  • 诊断Java代码:孤线程(Orphaned Thread)错误情势
  • 诊断Java代码
  • 诊断Java代码: 单元测试与自动化代码解析协同工作
  • 诊断Java代码: Repl供应交互式评价
  • 诊断Java代码: Liar View错误情势
  • 诊断Java代码: Java编程中的断言和时态逻辑
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .