前阵子写WapExplorer时,设计网络那一部分我采用的是线程编程,采用线程设计也有段时间了,但却总是Copy-
plaster,所以一直对它的机制不是很了解,直到那天碰到一个很白痴的问题(明明我启动一个线程去下载网络数据)为什么程序还提示你要采用线程去操作,这样才不会阻塞。具体看下代码
代码有详细解释
java 代码
- public class WapDownload extends Thread{
- private static Logger logger = Logger.getLogger("WapDownload");
- WmlParser wp;
- String url;
-
- WapDownload(String url,MainForm mainForm) throws XmlPullParserException, IOException{
- logger.debug("启动一个下载线程");
- this.url = url;
- wp = WmlParser.getWmlParser();
- wp.setMainForm(mainForm);
- //这段代码不能放在这里,因为
- ///setInput();
- start();
- }
- public void run() {
- setInput();
- try {
- wp.parser();
-
- } catch (XmlPullParserException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- //打开网络资源,其实WmlPaser通过setInput方法进行数据下载,这段代码不能放到初始话里
- //应该放在run方法。这样才能保证真正的线程去读取数据。
- private void setInput() {
- try {
- wp.setInput(HttpProxyHandler.openInputStream(url),"UTF-8");
- } catch (XmlPullParserException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
-
- }
- public static WapDownload openWapDownload(String url, MainForm mainForm) throws XmlPullParserException, IOException{
- return new WapDownload(url, mainForm);
- }
- }
经过上面的经验后,发觉,启动一个线程,线程真正工作的地方是run。
在程序初始话方法(构造方法,还是在主程序里执行,要调用start()才算是启动线程)
我好笨啊。看来我离真正的程序员还有一段距离
分享到:
相关推荐
- **线程同步机制**:执行`myActivity`对象的线程与`myBinder`对象的线程会进行同步,这使得开发者在处理IPC远程调用或跨进程线程交互时,能感受到如同在同一线程中操作的流畅性。 ### 3. LocalService与Remote...
在C#编程中,多线程进度条是一个重要的可视化组件,尤其在执行长时间运行的任务时,为...总的来说,多线程进度条是提升C#应用用户体验的重要手段,通过合理的设计和实现,可以让用户在等待过程中获得更好的互动感受。
这样不仅大大加快了拷贝速度,还提高了处理能力,特别是在拷贝大型文件或大量文件时,能够明显感受到执行效率的提升。 智能匹配技术是这一工具的又一亮点。在文件拷贝过程中,工具利用智能匹配算法,能够精确识别源...
多线程是程序设计中的一个重要技术,允许一个应用程序同时执行多个任务。在即时聊天系统中,多线程用于处理不同的任务,如接收和发送消息、用户登录验证、数据同步等。通过创建并行的执行线程,可以提高系统的响应...
在聊天系统中,UI设计直接影响用户体验,因此需要考虑布局、颜色、字体等元素,以提供良好的视觉感受。 以上就是这个基于C++和Qt的多线程局域网聊天系统所涵盖的主要技术点,这些知识对于理解和实现类似项目都非常...
如果在图形界面的同一个线程中进行查询和运算工作,则会导致一段时间界面处于死机状态,这会给用户带来不良的互动感受。解决这个问题的方法是单独启动一个线程进行运算和查询工作,并随时更新图形界面。 但是,这...
这样的设计使得游戏体验更为流畅,玩家可以同时感受到即时反馈。 其次,IO流在“TankGame”中的作用不容忽视。Java的IO流系统提供了读写数据的强大功能,使得游戏可以处理来自不同来源的数据,如加载游戏地图、读取...
《Java飞机大战小游戏:网络数据库线程...通过这个项目,开发者可以深入理解Java的面向对象编程、事件驱动、JDBC、Socket编程以及多线程等核心概念,同时也能感受到编程的乐趣和挑战,为今后的软件开发奠定坚实基础。
华为的面试题集及感受,主要关于JAVA及C部分的,涵盖了面向对象编程、多线程、网络编程、数据库编程等多个方面。以下是相关知识点的总结: 一、JAVA基础知识 1. JAVA的基本数据类型:在JAVA中,有8种基本数据类型...
"感受Java中的多线程设计.doc" 和 "多线程编程您不知道的5件事.doc" 这两份文档可能详细阐述了Java中多线程的设计模式和最佳实践,包括同步、互斥、守护线程、线程池等概念。学习多线程不仅需要理解Thread类和...
Java课程设计——构建广工大学版的俄罗斯方块游戏 在Java编程学习的过程中,课程设计是提升实践技能的重要环节。...对于初学者来说,这是一个很好的学习实践,可以巩固理论知识,同时也能感受到编程的乐趣。
设计内容覆盖面广泛,既包括操作系统核心模块的理解,如进程管理、内存管理、文件系统等,又需要学生在选择的平台上,例如DOS,构建一个简单的操作系统原型,亲身感受设计操作系统的全过程。 第二章深入探讨了基于...
学会如何在多线程环境下编写代码,防止竞态条件和死锁,是Windows程序设计的重要一环。 4. **内存管理**:理解Windows下的动态内存分配函数,如malloc、calloc、realloc和free,以及Windows特有的LocalAlloc、...
通过这些项目,学生能够真正理解和掌握面向对象编程、图形用户界面设计、算法设计、多线程编程和人工智能的基础知识,同时提升解决问题的能力和调试代码的技巧。通过这种情景式教学方法,学生可以在完成一个又一个...
Java设计模式是软件开发中的重要概念,它是一种...书中可能通过实例代码和案例分析,让你直观感受设计模式的魅力,真正做到“看了就会”。无论是对个人技能提升,还是团队协作,深入理解并运用设计模式都是至关重要的。
总之,天津科技大学的操作系统实验通过一系列精心设计的任务,引导学生深入探索Windows线程同步机制,不仅提升了学生的理论素养,也增强了他们的动手能力和问题解决能力,为未来的职业生涯奠定了坚实的技术基础。
课程内容涵盖了Java语言的基本概念、语法、面向对象特性、异常处理、输入输出(I/O)、图形用户界面(Swing GUI)、多线程和数据库连接(JDBC)等核心主题。 在课程中,教师通过讲述Java的发展历程,强调科技发展的曲折性...
本文档是一份关于“程序设计实训——坦克大战游戏”的实验报告,它不仅涉及游戏设计和编程技能,还综合了数据结构、算法设计、事件处理等多个计算机程序设计领域的知识点。 实验报告的核心在于详细阐述如何设计并...
2. 动态反馈:应用设计注重动态反馈,通过动画效果和过渡动画提升用户的交互感受。 3. 个性化设置:用户可以根据个人喜好调整主题颜色、字体大小等,实现个性化定制。 二、功能模块 1. 健康数据追踪:收集并记录...
Petzold在其著作《Windows程序设计(C语言版)》的第20章中深入探讨了多任务和多线程的概念及其在Windows操作系统中的实现。多任务是指操作系统能够同时执行多个程序的能力,而多线程则是在单个程序内部实现并发执行的...