欢迎来到天天文库
浏览记录
ID:5246668
大小:27.00 KB
页数:5页
时间:2017-12-06
《java语言程序调试技巧和多线程问题研究》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、Java语言程序调试技巧和多线程问题研究 摘要:在java语言程序的开发过程中经常会伴随着多次的修改调试。本文归纳总结java语言学习及程序调试中常用技巧,分析调试过程中的常见错误,以促进程序员编写正确的程序,提高编程能力。关键词:JAVA语言技巧程序调试多线程中图分类号:TP312文献标识码:A文章编号:1007-9416(2013)01-0200-01Java是一种应用于互联网的分布式环境的编程语言。Java语言易于使用,而且在编程时采用“以对象为导向”的方式。它可以应用于一台单独的电脑上,也可以应用于分布在一个网络的
2、服务器端和客户端。1JaVa语言学习常见技巧(1)勤动手:学编程语言要达到心领神会、融会贯通就必须勤动手。成功的软件开发人员无不经过大量的上机锻炼,只有理论和实践相结合才能真正掌握编程技能。(2)多动脑:对于Java语言的学习,建议从一开始就用面向对象的思维方式去面对你所接触的每件事。5(3)阅读API文档:Java中的“类”用以满足网络化、多线程、面向对象的需要,它是Java编程过程中不断利用的资源。Java的学习更多的是去学习和掌握它所提供的API类库。对于所接触到的类、方法,需要仔细去阅读文档的说明,再用自己编写的实例
3、去验证。(4)规范编码习惯:一个好的编程结构应该是能预防错误的发生,对错误的预见和错误出现以后的错误处理与异常处理的良好安排。经验丰富的程序员,需要良好的编码格式规范,而且程序中的逻辑实现要有一种良好的结构。(5)定义有意义类名:养成为每个类、每个方法起一个有意义的名字。在程序阅读的过程中,看到这个名字就可以知道它要实现的功能。(6)添加适量注释:注释提高程序的可读性和可维护性。作为一个软件产品,其中不同的变量及方法可能很多,合理的注释提高程序可读性和维护性。2Java程序调试常用技巧程序调试,是将编制的程序投入实际运行前,
4、用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程[1]。调试可以帮助识别和解决应用程序缺陷。(1)先简后繁:先使用一个boolean量,如:debugMode,需要看看程序的输出时可以使用:if(debugMode)System.out.println(”..”);在项目完毕后把debugMode变量设为false。5(2)自顶向下:出现错误时,要逐步缩小可能出现错误的范围,从整个程序到指定函数,再到指定行。如:Java-Ddebug=trueMyClass,在使用这种方法时,必须在你所有的class中添加Sys
5、tem.getProperty(”debug”)来取得调试标志,这样在不更改sourcecode的情况下可以直接修改Java程序调试标志。当错误比较麻烦时,可以定义一个用于调试的类。这样对于一个application(Test)可以进行调用:booleandebug=DebugManager.getSystemDebug(applicationKey);要打开Test的调试功能,只需:java-DTest.Debug=trueTest当然这个类可以进行进一步扩展,比如将其变为日志管理,控制调试信息的输出位置等(3)设置断点:
6、断点是程序运行中中断的地方,旨在开发者在程序运行过程中查看程序当前的运行状态。可以在测试时启用断言验证,而在部署时禁用断言验证。a.条件断点。加一个布尔条件,该断点会被激活,条件为真,就会执行该断点,否则将会跳过往下执行。b.异常断点。程序在遇到空指针异常(NullPointerException)时,添加一个异常断点,可以继续调试程序。5(4)单步执行程序:追踪类里面的方法体的整个执行过程,不需要设置断点就可以停止一个GUI程序的执行。设置断点后在调试器里面开始执行程序,当碰到第一个断点后,可以进入方法体或类体,也可以继续
7、运行直到下一个断点或程序结束。3Java应用程序常见多线程问题Java编程语言的多线程简单有效,比其他语言更容易实现。Java程序包括客户端和服务器端。常见的多线程问题包括活锁、死锁、隐性死锁和数据竞争。(1)活锁:当一个线程忙于接受新任务以致它永远没有机会完成任何任务时,就会发生活锁。这个线程最终将超出缓冲区并导致程序崩溃。试想一个秘书需要录入一封信,但她一直在忙于接电话,所以这封信永远不会被录入。(2)死锁。当一个线程需要一个资源而另一个线程持有该资源的锁时,就会发生死锁。如何发现问题并解决之。1)防止死锁的方法是对竞争
8、的资源引入序号,如果一个线程需要几个资源,那么它必须先得到小序号的资源,再申请大序号的资源。可以在Java代码中增加同步关键字的使用,这样可以减少死锁,但这样做也会影响性能。2)当进行嵌套的调用时,了解哪些调用使用了与其它调用同样的数据库连接。即使嵌套调用运行在同一个全局事务中,它仍将使用
此文档下载收益归作者所有