`
xuedong
  • 浏览: 297964 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java线程使用入门(1)

    博客分类:
  • java
阅读更多

      本文是Java线程使用的入门级教程。Java平台从开始就被设计成为多线程环境,多线程的好处在于可以充分利用处理器资源,保证更快速的完成任务。

<script src="http://www.51cto.com/js/article/keywords_ad_new.js"></script>

 

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[]) throws java.io.IOException {
		TimerTask task = new TimerTask() {
			public void run() {
				System.out.println("Hi");
			}
		};
		Timer timer = new Timer();
		timer.schedule(task, 0, 500);
		System.out.println("Press ENTER to stop");
		System.in.read(new byte[10]);
		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[]) {
		JFrame frame = new JFrame();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		Container contentPane = frame.getContentPane();
		final JLabel label = new JLabel("", JLabel.CENTER);
		label.setFont(new Font("Serif", Font.PLAIN, 36));
		contentPane.add(label, BorderLayout.CENTER);
		ActionListener listener = new ActionListener() {
			int count = 0;

			public void actionPerformed(ActionEvent e) {
				count++;
				label.setText(Integer.toString(count));
			}
		};
		Timer timer = new Timer(500, listener);
		timer.start();
		frame.setSize(300, 100);
		frame.show();
	}
}

 

上述程序的结果是:

 

万一你要做的不是一个简单的重复作业,java.lang.Thread类就派上了用场。它允许你自己控制基本功能。通过创建Thread的一个子类,你可以使你的系统脱离,并进行一个长时间运行的作业,如从网络上读取一个文件,而不阻碍你的其它程序的运行。这种长时间运行的作业将在run方法中定义。  更多内容请看Java环境安装配置、Solaris基础知识入门、Java编程开发手册专题,或进入讨论组讨论。


分享到:
评论

相关推荐

    java线程入门级书籍

    ### Java线程入门知识点详解 #### 一、Java线程基础知识概述 **1.1 什么是线程?** 线程是程序执行流的最小单元,是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。在Java中...

    java线程入门,java线程入门

    以下是对Java线程入门的详细讲解: 1. **线程的基本概念**: - 线程是操作系统分配CPU时间的基本单元,一个进程可以包含一个或多个线程。 - 在Java中,每个应用程序至少有一个主线程,它负责启动和控制其他线程。...

    java线程入门

    - Java线程有10个优先级,从Thread.MIN_PRIORITY(1)到Thread.MAX_PRIORITY(10),默认优先级是Thread.NORM_PRIORITY(5)。优先级高的线程可能更有可能获得CPU时间,但不保证。 6. **线程池** - Java提供...

    Java线程入门,学习Java线程的好帮手

    Java线程入门,学习Java线程的好帮手

    java线程入门 Java线程编程很好的入门书

    本文将基于提供的"Java线程入门"资料,深入探讨Java线程编程的基本概念、创建方法以及常见操作,帮助初学者建立起扎实的线程知识体系。 一、线程基础 1. 线程定义:线程是操作系统分配CPU时间的基本单元,一个进程...

    java线程基础入门

    java 线程基础入门 一个关于计算机的简化的视图是:它有一个执行计算的处理机、包含处理机所执行的程序的ROM(只读存储器)、包含程序所要操作的数据的RAM(只读存储器)。在这个简化视图中,只能执行一个作业。一个...

    Java线程入门

    ### Java线程入门知识点详解 #### 一、Java线程概览 - **目标读者**:本教程面向那些已经熟练掌握Java语言基本应用但对多线程编程尚不熟悉的程序员。 - **主要内容**:本教程将从零开始介绍Java线程的基础知识,...

    java线程入门,一本简绍java线程的书

    通过《Java线程入门》这本书,读者不仅可以理解Java线程的基本概念,还能学习到如何在实际项目中有效地使用线程,提升程序的并发性能。书中可能包含丰富的实例和实践练习,帮助读者巩固理论知识并提升实战技能。对于...

    java多线程入门

    Java多线程是Java编程中的核心概念...通过阅读《Java线程入门.pdf》这样的学习资料,结合实际编程实践,可以逐步掌握这门技术。在学习过程中,参考《E书说明.txt》中的指导,可以更好地利用提供的资源,加速学习进程。

    Java多线程入门介绍.pdf

    ### Java多线程入门知识点详解 #### 一、引言 多线程是现代软件开发中的重要技术之一,尤其在Java编程语言中占有极其重要的地位。对于任何一位Java程序员而言,掌握多线程的基本概念和技术是非常必要的。本文将...

    Java 多线程编程入门到精通源代码.zip

    尤其适合于没有 Java 线程开发经验的朋友。自己动手敲出本资源解压缩后的 chapter02 到 chanpter18,并运行,用心体会一下。也许在运行完 chapter18 的源码之后,你已经是一个对线程有着深刻理解的线程编程高手了! ...

    Java线程入门大全

    ### Java线程入门大全知识点详解 #### 一、线程基础概述 - **定义与特点:** - **线程**是一种比进程更细粒度的执行单元,它允许在一个进程中并发执行多个任务。 - **多线程**能够提高程序的效率和响应速度,...

    Java线程从入门到实践

    Java线程是Java编程中处理并发执行的关键概念。在Java中,线程是程序执行的最小单位,允许程序同时执行多个任务。Java的线程模型是面向对象的,这意味着线程是通过对象来创建和管理的。 1. 创建线程: Java提供了...

    最新java线程入门讲解

    本教程将深入浅出地介绍Java线程的基础知识,帮助初学者快速入门。 一、线程的创建 1. 继承Thread类:创建一个新的类,该类继承自Thread类,然后重写其run()方法。实例化这个子类对象后,调用start()方法即可启动...

    JAVA多线程入门教程

    本文将从进程、线程的基本概念、Java中的多线程支持以及如何创建和控制线程等方面,为你提供一个入门级别的教程。 1. 进程与线程: - **程序**是静态的代码集合,而**进程**是程序的一次动态执行过程,它是操作...

    java线程、线程池、xml解析入门

    Java线程、线程池和XML解析是Java编程中至关重要的三个概念,它们在实际开发中扮演着不可或缺的角色。下面将分别对这三个主题进行深入的介绍。 首先,我们来看Java线程。线程是程序执行的最小单位,一个进程可以...

    java线程实战手册

    《Java线程实战手册》是Java并发编程领域的一份重要参考资料,主要针对Java开发者,旨在帮助他们深入理解和熟练掌握Java中的多线程技术。虽然这里只提供了第一章的内容,但这一章通常会涵盖基础理论和核心概念,对于...

    Java线程从入门到实践.doc

    Java线程是编程中的核心概念,尤其是在多任务处理和并发编程中。Java作为一种纯面向对象的语言,其线程模型同样基于面向对象的设计。线程允许程序在同一时间执行多个独立的任务,提高了程序的运行效率。 1. **线程...

Global site tag (gtag.js) - Google Analytics