`
libingye
  • 浏览: 4131 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

java thread一个容易犯的错误

阅读更多
作者:高飞

转载请注明出处:http://blog.csdn.net/soartju



最近对以前的代码进行重构,在主线程中,有些函数方法运行的时间过长,导致主线程处理时间过长。

很自然,想到了Thread,将时间较长的方法放到一个新的Thread中运行,主线程就可以很快完成一次循环,不影响主线程中定期timer程序处理。



最初,原有代码修改如下:

   1. //A:main Thread code here
   2.
   3. new Thread(){
   4.     public void run() {
   5.         OldMethod();//原来的一些程序操作,时间较长
   6.     }
   7. }.run();
   8.
   9. //B:main Thread code here

相信大家都已经发现问题所在,这个内嵌的Thread调用了run()方法。



这样问题就出现了,运行一下程序,发现这段new Thread的程序并没有如我们预想的和主线程同时运行,而是和主线程串行的运行,即主线程执行完A段代码后,继续执行new Thread()中的run代码,等run()执行后,再执行后便的B段代码。



原因就出在了调用的是Thread的run()方法,这样就相当于调用了一个普通类的方法,导致并没有创建新的线程来运行run()中的代码。



下面给出正确的代码:

   1. //A:main Thread code here
   2.
   3. new Thread(){
   4.     public void run() {
   5.         OldMethod();//原来的一些程序操作,时间较长
   6.     }
   7. }.start();//创建一个新的线程运行run()中的程序
   8.
   9. //B:main Thread code here
分享到:
评论

相关推荐

    Java工作学习牛客网刷题错误总结.rar

    在Java工作学习的过程中,牛客网是一个非常受欢迎的在线刷题平台,提供了丰富的编程题目,帮助用户提升技术能力。这份“Java工作学习牛客网刷题错误总结”压缩包文件,显然是作者在解决这些题目时遇到的问题和错误的...

    Java数组越界问题实例解析

    然而,在使用数组时,我们容易犯的一个错误就是数组越界。例如: ```java int[][] array = {{1,2,3},{1,4}}; System.out.println(array[1][2]); ``` 在上面的例子中,我们试图访问 array[1][2],但是 array[1] ...

    Java图像处理技术四点

    一个容易犯的错误是将动画循环放在 paint() 中,这样占据了主 AWT 线程,而主线程将负责所有的绘图和事件处理。 在 Java 中,可以使用 Thread 或 Runnable 接口来实现线程。例如,可以创建一个类 Thread 的派生类,...

    java面试题目精选

    - **易犯错误的关键字**:列出了一些容易被误用的Java关键字。 - **注释的使用**:介绍了不同类型的注释及其在代码中的作用。 - **3.2 原始类型** - **int与Integer的区别**:解释了int作为基本类型与Integer...

    疯狂JAVA讲义

    1.6.3 初学者容易犯的错误 18 1.7 垃圾回收机制 20 1.8 何时开始使用IDE工具 21 学生提问:老师,我想学习Java编程,到底是学习Eclipse好呢,还是学习JBuilder好呢? 21 1.9 本章小结 22 本章练习 22 第2章 ...

    Java.Bug模式详解

    这些模式通常是指在编程时容易犯的一些常见错误,导致程序运行异常或者性能低下。本篇文章将深入探讨Java中的Bug模式,帮助开发者识别并避免这些问题。 一、空指针异常(NullPointerException) 在Java中,当尝试...

    java问题定位技术

    - `jstack`: 这是JDK自带的一个非常实用的命令行工具,可以用来查看Java进程中每个线程的堆栈跟踪信息。 - `jmap`: 虽然主要用于内存映像,但也可以结合其他工具来获取线程堆栈信息。 2. **Java API:** - `...

    OCAOCP Java SE 7 Programmer I & II Study Guide (Exams 1Z0-803 & 1Z0-804)

    4. **常见错误解析**:列举考生在备考过程中容易犯的错误,并提供改正方案。 综上所述,《OCA/OCP Java SE 7 Programmer I & II Study Guide (Exams 1Z0-803 & 1Z0-804)》这本书覆盖了从 Java 基础到高级主题的广泛...

    xml与反射.txt

    的,然后直接复制修改,由于容易犯各种低级的错误(大小写啊,多一个或少一个字母啊……),一个错误就可以让你找半天。 有了java反射机制,什么都好办了,只需要写一个dao类,四个方法,增删改查,传入不同的对象,...

    SCJP1.4陷阱总结

    SCJP(Sun Certified Programmer)是Java编程语言的一项专业认证,1.4版本是早期的一个版本,尽管现在Java已经发展到更新的版本,但了解早期版本的基础知识对于理解Java语言的演进和核心概念仍然十分有益。...

    sesvc.exe 阿萨德

    codeceo 首页问答热门文章RSS订阅 文章首页 Java JavaScript ... iOS ...看过上文的还记得在 HashMap 扩容的时候会调用 resize() 方法,就是这里的并发操作容易在一个桶上形成环形链表;这样当获取...

Global site tag (gtag.js) - Google Analytics