`
wuhua
  • 浏览: 2110296 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

关于线程设计的感受

阅读更多
            前阵子写WapExplorer时,设计网络那一部分我采用的是线程编程,采用线程设计也有段时间了,但却总是Copy-plaster,所以一直对它的机制不是很了解,直到那天碰到一个很白痴的问题(明明我启动一个线程去下载网络数据)为什么程序还提示你要采用线程去操作,这样才不会阻塞。具体看下代码
代码有详细解释
java 代码
 
  1. public class WapDownload  extends Thread{  
  2.     private static Logger logger = Logger.getLogger("WapDownload");  
  3.     WmlParser wp;   
  4.     String url;  
  5.    
  6.     WapDownload(String url,MainForm mainForm) throws XmlPullParserException, IOException{  
  7.         logger.debug("启动一个下载线程");  
  8.         this.url = url;  
  9.         wp = WmlParser.getWmlParser();  
  10.         wp.setMainForm(mainForm); 
  11.          //这段代码不能放在这里,因为
  12.         ///setInput(); 
  13.         start();  
  14.     }  
  15.     public void run() {  
  16.         setInput();  
  17.          try {  
  18.              wp.parser();  
  19.                
  20.         } catch (XmlPullParserException e) {       
  21.             e.printStackTrace();  
  22.         } catch (IOException e) {      
  23.             e.printStackTrace();  
  24.         }  
  25.     }  
  26.        
  27.     //打开网络资源,其实WmlPaser通过setInput方法进行数据下载,这段代码不能放到初始话里
  28.     //应该放在run方法。这样才能保证真正的线程去读取数据。
  29.     private void setInput() {  
  30.         try {  
  31.             wp.setInput(HttpProxyHandler.openInputStream(url),"UTF-8");  
  32.         } catch (XmlPullParserException e) {  
  33.             e.printStackTrace();  
  34.         } catch (IOException e) {          
  35.             e.printStackTrace();  
  36.         }  
  37.           
  38.     }  
  39.     public static WapDownload openWapDownload(String url, MainForm mainForm) throws XmlPullParserException, IOException{  
  40.         return new WapDownload(url, mainForm);  
  41.     }        
  42. }  


经过上面的经验后,发觉,启动一个线程,线程真正工作的地方是run。
在程序初始话方法(构造方法,还是在主程序里执行,要调用start()才算是启动线程)
我好笨啊。看来我离真正的程序员还有一段距离
分享到:
评论

相关推荐

    多线程进度条 调用方便

    在C#编程中,多线程进度条是一个重要的可视化组件,尤其在执行长时间运行的任务时,为...总的来说,多线程进度条是提升C#应用用户体验的重要手段,通过合理的设计和实现,可以让用户在等待过程中获得更好的互动感受。

    多线程即时聊天(单聊、群聊)

    多线程是程序设计中的一个重要技术,允许一个应用程序同时执行多个任务。在即时聊天系统中,多线程用于处理不同的任务,如接收和发送消息、用户登录验证、数据同步等。通过创建并行的执行线程,可以提高系统的响应...

    C++毕业设计:基于Qt的多线程局域网聊天系统(含客户端+服务端).zip

    在聊天系统中,UI设计直接影响用户体验,因此需要考虑布局、颜色、字体等元素,以提供良好的视觉感受。 以上就是这个基于C++和Qt的多线程局域网聊天系统所涵盖的主要技术点,这些知识对于理解和实现类似项目都非常...

    java-坦克大战-涉及多线程,IO流的操作

    这样的设计使得游戏体验更为流畅,玩家可以同时感受到即时反馈。 其次,IO流在“TankGame”中的作用不容忽视。Java的IO流系统提供了读写数据的强大功能,使得游戏可以处理来自不同来源的数据,如加载游戏地图、读取...

    Java Swing多线程死锁问题解析

    如果在图形界面的同一个线程中进行查询和运算工作,则会导致一段时间界面处于死机状态,这会给用户带来不良的互动感受。解决这个问题的方法是单独启动一个线程进行运算和查询工作,并随时更新图形界面。 但是,这...

    复制实用工具支持断点多线程

    这种工具通常提供了更直观、更有趣的文件浏览体验,尤其是对于喜欢尝试新事物和技术的用户来说,3D视图能带来一种独特的操作感受。 结合标签“实用工具”和“复制增强”,我们可以推测这是一款集成了高效复制与创新...

    java飞机大战小游戏(网络数据库线程).rar

    《Java飞机大战小游戏:网络数据库线程...通过这个项目,开发者可以深入理解Java的面向对象编程、事件驱动、JDBC、Socket编程以及多线程等核心概念,同时也能感受到编程的乐趣和挑战,为今后的软件开发奠定坚实基础。

    华为综合面试题集及感受

    华为的面试题集及感受,主要关于JAVA及C部分的,涵盖了面向对象编程、多线程、网络编程、数据库编程等多个方面。以下是相关知识点的总结: 一、JAVA基础知识 1. JAVA的基本数据类型:在JAVA中,有8种基本数据类型...

    java整理的一些资料

    "感受Java中的多线程设计.doc" 和 "多线程编程您不知道的5件事.doc" 这两份文档可能详细阐述了Java中多线程的设计模式和最佳实践,包括同步、互斥、守护线程、线程池等概念。学习多线程不仅需要理解Thread类和...

    java课程设计广工 俄罗斯方块

    Java课程设计——构建广工大学版的俄罗斯方块游戏 在Java编程学习的过程中,课程设计是提升实践技能的重要环节。...对于初学者来说,这是一个很好的学习实践,可以巩固理论知识,同时也能感受到编程的乐趣。

    Windows程序设计+随书源码

    学会如何在多线程环境下编写代码,防止竞态条件和死锁,是Windows程序设计的重要一环。 4. **内存管理**:理解Windows下的动态内存分配函数,如malloc、calloc、realloc和free,以及Windows特有的LocalAlloc、...

    通俗易懂的java设计模式

    Java设计模式是软件开发中的重要概念,它是一种...书中可能通过实例代码和案例分析,让你直观感受设计模式的魅力,真正做到“看了就会”。无论是对个人技能提升,还是团队协作,深入理解并运用设计模式都是至关重要的。

    天津科技大学操作系统实验

    总之,天津科技大学的操作系统实验通过一系列精心设计的任务,引导学生深入探索Windows线程同步机制,不仅提升了学生的理论素养,也增强了他们的动手能力和问题解决能力,为未来的职业生涯奠定了坚实的技术基础。

    【课程思政案例】《Java语言程序设计》:引入抗疫案例,启发工程思维,牢记责任使命.docx

    课程内容涵盖了Java语言的基本概念、语法、面向对象特性、异常处理、输入输出(I/O)、图形用户界面(Swing GUI)、多线程和数据库连接(JDBC)等核心主题。 在课程中,教师通过讲述Java的发展历程,强调科技发展的曲折性...

    安卓Android亚健康养生管理app设计源码案例设计.zip

    2. 动态反馈:应用设计注重动态反馈,通过动画效果和过渡动画提升用户的交互感受。 3. 个性化设置:用户可以根据个人喜好调整主题颜色、字体大小等,实现个性化定制。 二、功能模块 1. 健康数据追踪:收集并记录...

    Windows程序设计-第二版-源代码

    源代码部分通常包含书中示例程序的完整实现,读者可以通过编译和运行这些代码来直观感受Windows编程的实际过程。这有助于加深对理论知识的理解,同时锻炼实际编程技能。在分析和修改这些代码时,读者可以学习到良好...

    Java程序设计课程教学案例平台的设计.pdf

    根据提供的文件内容,以下是关于“Java程序设计课程教学案例平台的设计”的知识点详细说明: 1. Java程序设计课程教学内容现状分析: - 知识点杂乱:Java课程知识点众多,且分布不均,导致学生在学习过程中难以...

Global site tag (gtag.js) - Google Analytics