- 浏览: 141001 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
nishwd123:
受益匪浅,多谢楼主细心讲解.
Hibernate、Spring和Struts工作原理及使用理由 -
doublelcf:
写得真好。全面,流畅。清晰
Hibernate、Spring和Struts工作原理及使用理由
Java平台从开始就被设计成为多线程环境。在你的主程序执行的时候,其它作业如碎片收集和事件处理则是在后台进行的。
本质上,你可以认为这些作业是线程。它们正好是系统管理线程,但是无论如何,它们是线程。线程使你能够定义相互独立的作业,彼此之间互不干扰。系统将交换这些作业进或出cpu,这样(从外部看来)它们好象是同时运行的。
在你需要在你的程序中处理多个作业时,你也可以使用多个进程。这些进程可以是你自己创建的,你也可以操纵系统线程。你进行这些多作业处理,要使用几个不同的类或接口:
◆java.util.timer类
◆javax.swing.timer类
◆thread类
◆runnable接口
对于简单的作业,通常需要重复的,你可以使用java.util.timer类告诉它“每半秒钟做一次”。注意:大多数系统例程是使用毫秒的。半秒钟是500毫秒。
你希望timer实现的任务是在java.util.timertask实例中定义的,其中运行的方法包含要执行的任务。这些在hi类中进行了演示,其中字符串“hi”重复地被显示在屏幕上,直到你按enter键。
java runtime environment工作的方式是只要有一个线程在运行,程序就不退出。这样,当取消被调用,没有其它线程在运行了,则程序退出。有一些系统线程在运行,如碎片收集程序。这些系统线程也被称为后台线程。后台线程的存在不影响运行环境被关闭,只有非后台线程保证运行环境不被关闭。
javax.swing.timer类与java.util.timer类的工作方式相似,但是有一些差别需要注意。第一,运行的作业被 actionlistener接口的实现来定义。第二,作业的执行是在事件处理线程内部进行的,而不象java.util.timer类是在它的外部。这是很重要的,因为它关系到swing组件集是如何设计的。
如果你不熟悉swing,它是一组可以被java程序使用的图形组件。swing被设计程被称为单线程的。这意味着对swing类内部内容的访问必须在单个线程中完成。这个特定的线程是事件处理线程。
这样,例如你想改变label组件的文字,你不能仅仅调用jlabel的settext方法。相反,你必须确认settext调用发生在事件处理线程中,而这正是javax.swing.time类派的上用场的地方。
为了说明这第二种情况,下面的程序显示一个增加的计数器的值。美半秒钟计数器的数值增加,并且新的数值被显示:
因为有多种方式来处理线程,你选用哪种技术取决于你和你面临的条件。要成为一个有效的java编程人员,尽管你通常不必学习java编程语言的所有内容和核心库,但是线程是一个例外。你越早了解线程如何工作和如何使用线程,你将越早了解java程序如何工作和交互。
本质上,你可以认为这些作业是线程。它们正好是系统管理线程,但是无论如何,它们是线程。线程使你能够定义相互独立的作业,彼此之间互不干扰。系统将交换这些作业进或出cpu,这样(从外部看来)它们好象是同时运行的。
在你需要在你的程序中处理多个作业时,你也可以使用多个进程。这些进程可以是你自己创建的,你也可以操纵系统线程。你进行这些多作业处理,要使用几个不同的类或接口:
◆java.util.timer类
◆javax.swing.timer类
◆thread类
◆runnable接口
对于简单的作业,通常需要重复的,你可以使用java.util.timer类告诉它“每半秒钟做一次”。注意:大多数系统例程是使用毫秒的。半秒钟是500毫秒。
你希望timer实现的任务是在java.util.timertask实例中定义的,其中运行的方法包含要执行的任务。这些在hi类中进行了演示,其中字符串“hi”重复地被显示在屏幕上,直到你按enter键。
import java.util.*; public class hi { public static void main (string args); timer.cancel(); } }
java runtime environment工作的方式是只要有一个线程在运行,程序就不退出。这样,当取消被调用,没有其它线程在运行了,则程序退出。有一些系统线程在运行,如碎片收集程序。这些系统线程也被称为后台线程。后台线程的存在不影响运行环境被关闭,只有非后台线程保证运行环境不被关闭。
javax.swing.timer类与java.util.timer类的工作方式相似,但是有一些差别需要注意。第一,运行的作业被 actionlistener接口的实现来定义。第二,作业的执行是在事件处理线程内部进行的,而不象java.util.timer类是在它的外部。这是很重要的,因为它关系到swing组件集是如何设计的。
如果你不熟悉swing,它是一组可以被java程序使用的图形组件。swing被设计程被称为单线程的。这意味着对swing类内部内容的访问必须在单个线程中完成。这个特定的线程是事件处理线程。
这样,例如你想改变label组件的文字,你不能仅仅调用jlabel的settext方法。相反,你必须确认settext调用发生在事件处理线程中,而这正是javax.swing.time类派的上用场的地方。
为了说明这第二种情况,下面的程序显示一个增加的计数器的值。美半秒钟计数器的数值增加,并且新的数值被显示:
import javax.swing.*; import java.awt.*; import java.awt.event.*; public class count { public static void main(string args) { final string urlstring = args; final string message = args; thread thread1 = new thread() { public void run() { try { url url = new url(urlstring); urlconnection connection = url.openconnection(); inputstreamreader isr = new inputstreamreader( connection.getinputstream()); bufferedreader reader = new bufferedreader(isr); int count = 0; while (reader.read() != -1) { count++; } system.out.println("size is : " + count); reader.close(); } catch (malformedurlexception e) { system.err.println("bad url: " + urlstring); } catch (ioexception e) { system.err.println ("i/o problems"); } } }; thread1.start(); runnable runnable = new runnable() { public void run() { while(true) { system.out.println(message); try { thread.sleep(500); } catch (interruptedexception e) { } } } }; thread thread2 = new thread(runnable); thread2.start(); try { system.out.println ("press enter to stop"); system.in.read(new byte); } catch (ioexception e) { system.out.println("i/o problems"); } system.exit(0); } }
因为有多种方式来处理线程,你选用哪种技术取决于你和你面临的条件。要成为一个有效的java编程人员,尽管你通常不必学习java编程语言的所有内容和核心库,但是线程是一个例外。你越早了解线程如何工作和如何使用线程,你将越早了解java程序如何工作和交互。
发表评论
-
Java中serialVersionUID
2012-11-26 13:27 866Java中serialVersionUID serialV ... -
ArrayList数组对象排序
2012-11-13 21:53 1448POJO package com.test.compara ... -
Java堆和栈的区别 equals 和 == 的区别
2012-11-07 12:10 830Java堆和栈的区别 equals ... -
Cookie,Session,Application用法及区别
2012-05-22 15:20 2844一.Cookie 首先,Cookie的作用域为 ... -
static 的用法
2012-05-22 13:58 913static 代码块应用 package com.ut ... -
finally解析
2012-05-22 13:47 967一.finally 中的语句什么 ... -
java 断言 assert 初步使用:断言开启、断言使用
2012-05-04 20:43 1557java 断言 assert 初步使用:断言开启、断言使用 ... -
java 定时任务实现
2012-04-05 22:41 3691java.util.Timer定时器,实际上是个线程,定时调度 ... -
Servlet上传文件,commons-fileupload
2012-03-02 11:17 4840Servlet上传文件,commons-fil ... -
堆与栈的区别
2012-02-24 11:58 961堆和栈的区别 全局,静态,new产生的变量都在堆中动态分 ... -
在Java中用单例模式有什么好处
2012-01-30 19:46 1341Java Singleton模式主要作 ... -
JAVA单例模式的几种实现方法
2012-01-30 19:41 9031 饿汉式单例类.在类初始化时,已经自行实例化 clas ... -
jsp中的注释<!-- -->内容中不能包含--
2011-11-23 17:45 921jsp中的注释<!-- -->内容中不能包含-- ... -
ibatis和hibernate的区别
2011-08-15 13:34 649ibatis和hibernate的区别 ... -
equals和"=="浅析
2011-02-24 22:30 822==操作符专门用来比较 ... -
java中的重写与重载
2011-02-21 13:59 899方法的重写Overriding和重载Overloading是J ... -
MyEclipse生成WAR包并在Tomcat下部署发布
2011-02-18 22:56 2286右键选中项目,选择export。 然后选择J2EE-> ... -
JPA详解
2011-02-17 08:54 2038JPA全称Java Persistence API.JPA通过 ... -
comparable和comparator的区别
2011-02-16 17:59 1232两者区别: 1) Comparable接 ... -
Freemarker网站静态化实现
2011-02-15 14:26 1073转载自http://www.iteye.com/topic/4 ...
相关推荐
java线程第二版中英文 java线程第二版中英文 线程并不是新的概念:许多操作系统和语言都支持它们。在Java出现以前,似乎人人都在谈论线程,却很少有人使用它。用线程编程是技巧性很强的且不可移植。 而在Java中却...
Java多线程是Java编程中的重要概念,它允许程序同时执行多个任务,极大地提升了程序的效率和性能。...在实际开发中,合理运用线程同步和通信机制,能够提高系统的响应速度和并发处理能力,提升软件的用户体验。
Java线程是Java编程中非常重要的一个概念,它可以帮助开发者实现多任务并行处理,提高程序的执行效率。理解线程的创建、生命周期管理以及线程间的同步和通信机制对于开发高质量的Java应用至关重要。希望以上内容能够...
Java线程分析是Java开发中的重要环节,尤其是在处理性能优化、死锁排查或者并发问题时。TDA(Thread Dump Analyzer)是一款强大的Java线程分析工具,它能够帮助开发者深入理解应用在运行时的线程状态,包括线程的...
本文将详细介绍Java的多线程技术,并通过一个具体的案例——多用户在线聊天室的开发——展示如何在网络编程中运用这一技术。 #### Java多线程简介 Java中的多线程机制是其一大亮点。所谓线程,是指程序执行中的一个...
Java线程有10个优先级(MIN_PRIORITY, NORM_PRIORITY, MAX_PRIORITY),默认优先级是NORM_PRIORITY。但是,线程优先级并不保证绝对的执行顺序,操作系统调度策略可能影响实际执行顺序。 7. join()方法: 一个线程...
下面我们将深入探讨Java中线程的应用实例,以及在实际开发中需要注意的关键点。 首先,让我们来看看`Thread.java`这个文件,它通常包含了定义和实现线程的方法。在Java中,创建线程有两种主要方式:继承`Thread`类...
在Java编程中,多线程是一项关键特性,它允许程序同时执行多个任务,提升系统效率。在处理耗时操作如大文件下载、数据处理或网络请求时,展示进度条能够提供用户友好的交互体验,让使用者了解任务的完成状态。本主题...
Java线程是Java编程语言中的核心概念,尤其在多任务处理和并发编程中扮演着重要角色。线程允许一个程序内部同时执行多个独立的控制流,使得程序能够更高效地利用处理器资源。本文将深入解析Java线程的相关知识点,...
#### 四、线程在Java UI开发中的应用 - **事件驱动模型**:Java中的GUI框架如AWT和Swing采用了事件驱动模型,其中有一个专门的事件线程负责处理用户的输入事件。为了避免事件处理导致UI卡顿,通常会将耗时的操作放...
线程在Java编程中扮演着至关重要的角色,它是程序中的执行单元,允许应用程序同时执行多个任务。本课程将深入探讨线程的基础知识,包括如何创建线程、理解线程的状态以及如何有效地管理线程资源,特别是通过线程池来...
Java 模拟线程并发是编程领域中的一个重要概念,尤其在多核处理器和高并发应用中,理解并熟练掌握线程并发技术对于提升程序性能至关重要。在Java中,线程并发可以通过多种方式实现,包括继承Thread类、实现Runnable...
多线程技术是Java高级程序语言解决并发处理问题的核心方案,在网络通信系统设计...在实际应用中,开发者需要深入理解多线程编程的挑战,合理运用Java提供的同步控制机制和网络通信机制,以确保网络通信系统的稳定运行。
Java多线程是Java编程语言中一个非常重要的概念,它允许开发者在一个程序中创建多个执行线程并行运行,以提高程序的执行效率和响应速度。...在实际开发中,正确地应用多线程机制可以显著提升程序的性能和用户体验。
创建Java线程主要有两种方式: 1. 继承Thread类:创建Thread的子类并重写run()方法,然后通过调用start()方法启动线程。 2. 实现Runnable接口:创建一个实现了Runnable接口的类,实现run()方法,然后将该类的实例...
在IT行业中,尤其是在Java应用程序的开发和调试过程中,理解并分析线程堆栈是非常关键的。线程堆栈反映了程序运行时的线程状态,帮助开发者定位和解决多线程问题,如死锁、资源竞争等。IBM为WebSphere Application ...
本示例可能是一个Applet,Applet是Java小程序,它可以在Web浏览器中运行,展示了如何在Java环境中应用多线程。 首先,我们要理解线程的基本概念。线程是程序执行的最小单元,每个线程都有自己的程序计数器、虚拟机...
Java多线程是Java编程中的重要概念,尤其在开发高效能和并发应用程序时不可或缺。本文将深入探讨Java多线程的应用实例,这对于初学者来说是一个很好的学习起点。 首先,我们来看"SimulateRailwayStation.java"这个...
本文将深入探讨Java线程的核心概念、API以及在实际开发中的应用,旨在帮助你理解和掌握这一关键技能。 首先,我们需要了解什么是线程。在单核CPU系统中,线程是操作系统调度的基本单位,而在多核CPU系统中,每个...