0 0

java 线程疑问10

最近在做一个 socket 通信的服务器,当然这就与多线程池分不开了。
我遇到的问题是这样的:
  
   我用SWT画了一个界面,界面上实时刷新和统计socket服务器上的一些性能的统计数据。
其实这个问题不单纯的是JAVA线程的问题,在用SWT的时候,我们不能在SWT的线程之外去访问SWT界面的组件,也就是说不能在我们自己的线程中用  Text.setText()这种方式去访问界面的组件。只能能过  Display.syncExec(Runnable)的方法,在Runnable里面去访问组件,由于界面上的数据是实时刷新的,我在线程里面就死循环刷新界面上的数据。

问题就来了,只要这个线程一启动,CPU就马上彪到100%,但是如果在线程中采用每次刷新后 睡一下,就不会,但是这样数据就不实时了,而且还可能导致数据的积压,比较蛋疼。。各种方式都试过了,还是解决不这个问题,现在采用了每次刷新后执行一次 Thread.sleep(1),暂停千分之一秒,

个人觉得可能是线程里面频繁访问SWT组件造成的,因为其它采用死循环的线程并没有出现这种情况。。

其实要实现这个功能不一定要用线程死循环,用监听器模式也可以实现,但我不明白的是,为什么这个线程这么占CPU资源。。。相当不明白
2011年11月03日 10:08

2个答案 按时间排序 按投票排序

0 0

不睡眠的话,程序一直就在使劲跑,所以cpu就100%
你这程序是设计错误,界面不能主动去拉数据,只能被动接受数据。
应该在socket监听到有数据时才去修改界面。应该在监听到数据的方法里加上修改界面的代码。
如果必须界面主动拉数据,则只能每隔一段时间去取一次。

2011年11月03日 17:53
0 0

这个不应该用死循环来实现,死循环会让CPU彪到100%

一般你用java开发这种实时的东西,本来对实时性要求就不是特别高吧 连sleep(1)都不让 这也太假了。。。

2011年11月03日 10:26

相关推荐

    Java线程问题代码

    从给定的文件标题“Java线程问题代码”和描述“Java线程问题代码详细解读,希望对各位有用处”,我们可以看出,这份代码是关于Java多线程编程的一个实例,旨在展示线程创建、运行以及线程间通信的一些基本概念和潜在...

    手把手教你:如何用Java多线程模拟银行叫号服务.pdf

    在本文中,我们将深入探讨如何使用Java多线程来模拟一个银行叫号服务系统。这个系统的核心在于理解和...希望这个教程对你有所帮助,如果你有任何疑问或想要了解更多关于Java多线程或者其他技术的话题,欢迎提出讨论。

    汪文君高并发编程实战视频资源下载.txt

    │ 高并发编程第一阶段28讲、线程生产者消费者的综合实战结合Java8语法.mp4 │ 高并发编程第一阶段29讲、如何实现一个自己的显式锁Lock精讲上.mp4 │ 高并发编程第一阶段30讲、如何实现一个自己的显式锁Lock精讲...

    java2java2java2java2

    8. **多线程**:Java内置了对多线程的支持,通过Thread类或者Runnable接口可以创建并管理线程,实现并发执行。 9. **Java API和库**:Java标准库提供了大量预先编写好的类和方法,如IO、网络、日期时间、数学计算等...

    Java解惑 中文版

    1. **内存管理**:Java的垃圾回收机制是其一大特色,但也常常引发疑问。书中详细解释了如何理解和控制对象生命周期,避免内存泄漏和性能问题。 2. **异常处理**:异常处理是Java程序的重要组成部分。书中会讲解如何...

    JAVA2api.rar

    在Java学习过程中,这样的社区是非常重要的,可以解决你在API使用中遇到的疑问,与其他开发者交流经验,共同进步。 "使用说明.htm":这个文件很可能是关于如何使用JAVA2API的手册或者指南,它会详细解释如何查阅API...

    Java并发编程实践

    从标题和描述中可以看出,这份资料主要关注Java中的多线程技术及其应用实践,是面向那些希望深入理解和掌握Java并发编程技巧的学习者和开发者。 ### Java并发编程概述 在计算机科学中,**并发**是指多个计算任务...

    Java多线程+网银取款案例精讲

    课程简介本课程是《Java初级至应用》系统课程的第十章,全套课程精细讲解,课程超过其他机构30%的课程量,经过我们全套课程系统学习的同学,可轻松从事Java工程师或系统架构师岗位,课程提供全套代码笔记其它相关...

    西农java实验题

    文件中的"www.java1234.com"可能是一个教学资源网站,提供了更多的Java学习资料和解答疑问的平台。 以下是可能涵盖的一些Java知识点: 1. **基本语法**:包括变量声明、数据类型(如整型、浮点型、字符型、布尔型...

    Java面试解惑宝典(高清PDF版)

    最后,《Java解惑(中文版)》可能是针对Java编程中常见的疑问和陷阱进行的详细解释,旨在帮助开发者避免常见的编程错误,提升代码质量。这本书可能涵盖了一些容易误解的概念,如字符串的不可变性、equals()与...

    Java基础思维导图

    6. **线程与并发**:Java提供了丰富的线程API,学习如何创建和管理线程,理解同步和并发的概念,是构建多任务应用程序的基础。 7. **反射机制**:反射允许在运行时动态地获取类的信息并操作类的对象,是许多高级...

    Java_解惑(PDF)

    7. **多线程**:Java支持多线程编程,这涉及线程的创建、同步和通信。初学者可能会遇到死锁、竞态条件等问题,PDF可能提供了解决这些问题的策略。 8. **接口与抽象类**:这两种都是实现多态的方式,但有各自的使用...

    Java并发程序设计教程.rar

    最后,“Java解惑(中文).pdf”可能是对Java并发编程中常见疑问的解答,涵盖了诸如线程安全、线程局部变量、并发集合(如ConcurrentHashMap)和并发容器(如BlockingQueue)等主题。这些内容有助于开发者理解并发编程...

    疯狂java讲义 课后答案 光盘内容

    《疯狂Java讲义》是一本深受Java初学者和进阶者喜爱的教材,它系统地介绍了Java编程语言的各个方面,包括基础语法、面向对象、集合框架、多线程、网络编程、I/O流、数据库操作、JSP与Servlet等。课后答案则是作者...

    一张图读懂Java多线程

    1、带着疑问看图  1)竞争对象的锁和竞争CPU资源以及竞争被唤醒  2)何种情况下获取到了锁,何种情况下会释放锁  2、还是那张图  3、详细图解  1)Thread t = new Thread(),初始化一个线程,实际上是...

    2021最新java入门教程下载借鉴.pdf

    - **多线程**:Java内置支持多线程,允许程序同时执行多个任务,这对于服务器端编程特别有用。 - **可移植性**:Java的规范确保了代码的跨平台兼容性,使得应用程序能在不同操作系统上运行。 - **Applets和...

    Java实验报告及源码

    7. **多线程**:Java支持并发编程,通过Thread类和Runnable接口实现,报告可能探讨了线程同步、互斥锁、线程池等概念。 8. **泛型**:泛型提供了一种在编译时检查类型安全的方式,报告可能会有泛型类、泛型方法的...

    java自学课件

    同时,参与Java相关的论坛、社区,如Stack Overflow、CSDN等,可以及时获取最新资讯,解答疑问,与其他开发者交流心得,进一步提升自己。 总的来说,“java自学课件”是一套全面的Java学习资源,涵盖了从入门到进阶...

    完整版精品java课件 Java基础入门教程 Java程序设计 第1章 Java语言概述(共38页).ppt

    学习Java的过程中,可以参考专业书籍如《Java编程思想》以及官方JDK帮助文档,还可以借助社区论坛如CSDN和JavaWorld获取资源和解答疑问。教学通常包括理论讲解和实践操作,通过作业、课堂活动、期中考试和期末考试...

    河工大 java实验课程资源

    6. **多线程**:Java内置对多线程的支持,实验课程可能包含线程的创建、同步控制(synchronized关键字、wait()、notify())等内容,以实现并发编程。 7. **网络编程**:Java的Socket编程是网络通信的基础,实验可能...

Global site tag (gtag.js) - Google Analytics