最近在做一个 socket 通信的服务器,当然这就与多线程池分不开了。
我遇到的问题是这样的:
我用SWT画了一个界面,界面上实时刷新和统计socket服务器上的一些性能的统计数据。
其实这个问题不单纯的是JAVA线程的问题,在用SWT的时候,我们不能在SWT的线程之外去访问SWT界面的组件,也就是说不能在我们自己的线程中用 Text.setText()这种方式去访问界面的组件。只能能过 Display.syncExec(Runnable)的方法,在Runnable里面去访问组件,由于界面上的数据是实时刷新的,我在线程里面就死循环刷新界面上的数据。
问题就来了,只要这个线程一启动,CPU就马上彪到100%,但是如果在线程中采用每次刷新后 睡一下,就不会,但是这样数据就不实时了,而且还可能导致数据的积压,比较蛋疼。。各种方式都试过了,还是解决不这个问题,现在采用了每次刷新后执行一次 Thread.sleep(1),暂停千分之一秒,
个人觉得可能是线程里面频繁访问SWT组件造成的,因为其它采用死循环的线程并没有出现这种情况。。
其实要实现这个功能不一定要用线程死循环,用监听器模式也可以实现,但我不明白的是,为什么这个线程这么占CPU资源。。。相当不明白
相关推荐
从给定的文件标题“Java线程问题代码”和描述“Java线程问题代码详细解读,希望对各位有用处”,我们可以看出,这份代码是关于Java多线程编程的一个实例,旨在展示线程创建、运行以及线程间通信的一些基本概念和潜在...
在本文中,我们将深入探讨如何使用Java多线程来模拟一个银行叫号服务系统。这个系统的核心在于理解和...希望这个教程对你有所帮助,如果你有任何疑问或想要了解更多关于Java多线程或者其他技术的话题,欢迎提出讨论。
│ 高并发编程第一阶段28讲、线程生产者消费者的综合实战结合Java8语法.mp4 │ 高并发编程第一阶段29讲、如何实现一个自己的显式锁Lock精讲上.mp4 │ 高并发编程第一阶段30讲、如何实现一个自己的显式锁Lock精讲...
8. **多线程**:Java内置了对多线程的支持,通过Thread类或者Runnable接口可以创建并管理线程,实现并发执行。 9. **Java API和库**:Java标准库提供了大量预先编写好的类和方法,如IO、网络、日期时间、数学计算等...
1. **内存管理**:Java的垃圾回收机制是其一大特色,但也常常引发疑问。书中详细解释了如何理解和控制对象生命周期,避免内存泄漏和性能问题。 2. **异常处理**:异常处理是Java程序的重要组成部分。书中会讲解如何...
在Java学习过程中,这样的社区是非常重要的,可以解决你在API使用中遇到的疑问,与其他开发者交流经验,共同进步。 "使用说明.htm":这个文件很可能是关于如何使用JAVA2API的手册或者指南,它会详细解释如何查阅API...
从标题和描述中可以看出,这份资料主要关注Java中的多线程技术及其应用实践,是面向那些希望深入理解和掌握Java并发编程技巧的学习者和开发者。 ### Java并发编程概述 在计算机科学中,**并发**是指多个计算任务...
课程简介本课程是《Java初级至应用》系统课程的第十章,全套课程精细讲解,课程超过其他机构30%的课程量,经过我们全套课程系统学习的同学,可轻松从事Java工程师或系统架构师岗位,课程提供全套代码笔记其它相关...
文件中的"www.java1234.com"可能是一个教学资源网站,提供了更多的Java学习资料和解答疑问的平台。 以下是可能涵盖的一些Java知识点: 1. **基本语法**:包括变量声明、数据类型(如整型、浮点型、字符型、布尔型...
最后,《Java解惑(中文版)》可能是针对Java编程中常见的疑问和陷阱进行的详细解释,旨在帮助开发者避免常见的编程错误,提升代码质量。这本书可能涵盖了一些容易误解的概念,如字符串的不可变性、equals()与...
6. **线程与并发**:Java提供了丰富的线程API,学习如何创建和管理线程,理解同步和并发的概念,是构建多任务应用程序的基础。 7. **反射机制**:反射允许在运行时动态地获取类的信息并操作类的对象,是许多高级...
7. **多线程**:Java支持多线程编程,这涉及线程的创建、同步和通信。初学者可能会遇到死锁、竞态条件等问题,PDF可能提供了解决这些问题的策略。 8. **接口与抽象类**:这两种都是实现多态的方式,但有各自的使用...
最后,“Java解惑(中文).pdf”可能是对Java并发编程中常见疑问的解答,涵盖了诸如线程安全、线程局部变量、并发集合(如ConcurrentHashMap)和并发容器(如BlockingQueue)等主题。这些内容有助于开发者理解并发编程...
《疯狂Java讲义》是一本深受Java初学者和进阶者喜爱的教材,它系统地介绍了Java编程语言的各个方面,包括基础语法、面向对象、集合框架、多线程、网络编程、I/O流、数据库操作、JSP与Servlet等。课后答案则是作者...
1、带着疑问看图 1)竞争对象的锁和竞争CPU资源以及竞争被唤醒 2)何种情况下获取到了锁,何种情况下会释放锁 2、还是那张图 3、详细图解 1)Thread t = new Thread(),初始化一个线程,实际上是...
- **多线程**:Java内置支持多线程,允许程序同时执行多个任务,这对于服务器端编程特别有用。 - **可移植性**:Java的规范确保了代码的跨平台兼容性,使得应用程序能在不同操作系统上运行。 - **Applets和...
7. **多线程**:Java支持并发编程,通过Thread类和Runnable接口实现,报告可能探讨了线程同步、互斥锁、线程池等概念。 8. **泛型**:泛型提供了一种在编译时检查类型安全的方式,报告可能会有泛型类、泛型方法的...
同时,参与Java相关的论坛、社区,如Stack Overflow、CSDN等,可以及时获取最新资讯,解答疑问,与其他开发者交流心得,进一步提升自己。 总的来说,“java自学课件”是一套全面的Java学习资源,涵盖了从入门到进阶...
学习Java的过程中,可以参考专业书籍如《Java编程思想》以及官方JDK帮助文档,还可以借助社区论坛如CSDN和JavaWorld获取资源和解答疑问。教学通常包括理论讲解和实践操作,通过作业、课堂活动、期中考试和期末考试...
6. **多线程**:Java内置对多线程的支持,实验课程可能包含线程的创建、同步控制(synchronized关键字、wait()、notify())等内容,以实现并发编程。 7. **网络编程**:Java的Socket编程是网络通信的基础,实验可能...