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

Java多线程编程实战之不倡导的办法[Java编程]

赞助商链接



  本文“Java多线程编程实战之不倡导的办法[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

不倡导利用的办法是为支持向后兼容性而保存的那些办法,它们在今后的版本中大概呈现,也大概不呈现.Java 多线程支持在版本 1.1 和版本 1.2 中做了庞大订正,stop()、suspend() 和 resume() 函数已不倡导利用.这些函数在 JVM 中大概引入奇妙的错误.固然函数名大概听起来很诱人,但请抵抗引诱不要利用它们.

调试线程化的程序

在线程化的程序中,大概发生的某些常见而讨厌的情形是死锁、活锁、内存破坏和资源耗尽.

死锁

死锁大概是多线程程序最常见的问题.当一个线程需求一个资源而另一个线程持有该资源的锁时,就会发死活锁.这种情形普通很难检测.但是,办理筹划却相当好:在全部的线程中按相同的次序获得全部资源锁.比方,假若有四个资源 —A、B、C 和 D — 并且一个线程大概要获得四个资源中任何一个资源的锁,则请确保在获得对 B 的锁之前首先获得对 A 的锁,依此类推.假如“线程 1”但愿获得对 B 和 C 的锁,而“线程 2”获得了 A、C 和 D 的锁,则这一技术大概招致阻塞,但它永久不会在这四个锁上造成死锁.

活锁

当一个线程忙于承受新任务乃至它永久没有机会完成任何任务时,就会发生活锁.这个线程终究将超越缓冲区并招致程序崩溃.试想一个秘书需求录入一封信,但她一向在忙于接电话,所以这封信永久不会被录入.

内存破坏

假如明智地利用 synchronized 关键字,则完好可以避免内存错误这种气死人的问题.

资源耗尽

某些系统资源是有限的,如文件描写符.多线程程序大概耗尽资源,因为每个线程都大概但愿有一个这样的资源.假如线程数相当大,大概某个资源的侯选线程数远远超越了可用的资源数,则最好利用 资源池.一个最好的示例是数据库衔接池.只要线程需求利用一个数据库衔接,它就从池中取出一个,利用今后再将它返回池中.资源池也称为 资源库.

调试大量的线程

有时一个程序因为有大量的线程在运行而极难调试.在这种情形下,下面的这个类大概会派上用场:

public class Probe extends Thread {
public Probe() {}
public void run() {
  while(true) {
   Thread[] x = new Thread[100];
   Thread.enumerate(x);
   for(int i=0; i<100; i++) {
    Thread t = x[i];
    if(t == null)
     break;
    else
     System.out.println(t.getName() + "  " + t.getPriority()
+ "  " + t.isAlive() + "  " + t.isDaemon());
   }
  }
}
}

  以上是“Java多线程编程实战之不倡导的办法[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 利用Javascript实现网页水印(非图片水印)
  • Java开辟环境的搭建
  • Ubuntu java安装与配置
  • 办理Ubuntu 10.04 Firefox3.6 Java浏览器插件不工作的问
  • Ubuntu重装后Java环境的设置
  • Sun Java进入Ubuntu 10.10软件中央
  • Ubuntu 10.10配置Java开辟环境
  • 在Ubuntu 10.10中配置Java环境变量的办法
  • Ubuntu下Java环境的搭建
  • Ubuntu 10.04 下安装 Java, JRE
  • Ubuntu 10.04下的搭建SUN JAVA开辟环境
  • Ubuntu 12.04安装java7
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

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

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