前阵子写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()才算是启动线程)
我好笨啊。看来我离真正的程序员还有一段距离
分享到:
相关推荐
在C#编程中,多线程进度条是一个重要的可视化组件,尤其在执行长时间运行的任务时,为...总的来说,多线程进度条是提升C#应用用户体验的重要手段,通过合理的设计和实现,可以让用户在等待过程中获得更好的互动感受。
多线程是程序设计中的一个重要技术,允许一个应用程序同时执行多个任务。在即时聊天系统中,多线程用于处理不同的任务,如接收和发送消息、用户登录验证、数据同步等。通过创建并行的执行线程,可以提高系统的响应...
在聊天系统中,UI设计直接影响用户体验,因此需要考虑布局、颜色、字体等元素,以提供良好的视觉感受。 以上就是这个基于C++和Qt的多线程局域网聊天系统所涵盖的主要技术点,这些知识对于理解和实现类似项目都非常...
这样的设计使得游戏体验更为流畅,玩家可以同时感受到即时反馈。 其次,IO流在“TankGame”中的作用不容忽视。Java的IO流系统提供了读写数据的强大功能,使得游戏可以处理来自不同来源的数据,如加载游戏地图、读取...
如果在图形界面的同一个线程中进行查询和运算工作,则会导致一段时间界面处于死机状态,这会给用户带来不良的互动感受。解决这个问题的方法是单独启动一个线程进行运算和查询工作,并随时更新图形界面。 但是,这...
这种工具通常提供了更直观、更有趣的文件浏览体验,尤其是对于喜欢尝试新事物和技术的用户来说,3D视图能带来一种独特的操作感受。 结合标签“实用工具”和“复制增强”,我们可以推测这是一款集成了高效复制与创新...
《Java飞机大战小游戏:网络数据库线程...通过这个项目,开发者可以深入理解Java的面向对象编程、事件驱动、JDBC、Socket编程以及多线程等核心概念,同时也能感受到编程的乐趣和挑战,为今后的软件开发奠定坚实基础。
华为的面试题集及感受,主要关于JAVA及C部分的,涵盖了面向对象编程、多线程、网络编程、数据库编程等多个方面。以下是相关知识点的总结: 一、JAVA基础知识 1. JAVA的基本数据类型:在JAVA中,有8种基本数据类型...
"感受Java中的多线程设计.doc" 和 "多线程编程您不知道的5件事.doc" 这两份文档可能详细阐述了Java中多线程的设计模式和最佳实践,包括同步、互斥、守护线程、线程池等概念。学习多线程不仅需要理解Thread类和...
Java课程设计——构建广工大学版的俄罗斯方块游戏 在Java编程学习的过程中,课程设计是提升实践技能的重要环节。...对于初学者来说,这是一个很好的学习实践,可以巩固理论知识,同时也能感受到编程的乐趣。
学会如何在多线程环境下编写代码,防止竞态条件和死锁,是Windows程序设计的重要一环。 4. **内存管理**:理解Windows下的动态内存分配函数,如malloc、calloc、realloc和free,以及Windows特有的LocalAlloc、...
Java设计模式是软件开发中的重要概念,它是一种...书中可能通过实例代码和案例分析,让你直观感受设计模式的魅力,真正做到“看了就会”。无论是对个人技能提升,还是团队协作,深入理解并运用设计模式都是至关重要的。
总之,天津科技大学的操作系统实验通过一系列精心设计的任务,引导学生深入探索Windows线程同步机制,不仅提升了学生的理论素养,也增强了他们的动手能力和问题解决能力,为未来的职业生涯奠定了坚实的技术基础。
课程内容涵盖了Java语言的基本概念、语法、面向对象特性、异常处理、输入输出(I/O)、图形用户界面(Swing GUI)、多线程和数据库连接(JDBC)等核心主题。 在课程中,教师通过讲述Java的发展历程,强调科技发展的曲折性...
2. 动态反馈:应用设计注重动态反馈,通过动画效果和过渡动画提升用户的交互感受。 3. 个性化设置:用户可以根据个人喜好调整主题颜色、字体大小等,实现个性化定制。 二、功能模块 1. 健康数据追踪:收集并记录...
源代码部分通常包含书中示例程序的完整实现,读者可以通过编译和运行这些代码来直观感受Windows编程的实际过程。这有助于加深对理论知识的理解,同时锻炼实际编程技能。在分析和修改这些代码时,读者可以学习到良好...
根据提供的文件内容,以下是关于“Java程序设计课程教学案例平台的设计”的知识点详细说明: 1. Java程序设计课程教学内容现状分析: - 知识点杂乱:Java课程知识点众多,且分布不均,导致学生在学习过程中难以...