知识大全 在Java应用开发中如何使用线程
Posted 知
篇首语:事常与人违,事总在人为。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 在Java应用开发中如何使用线程相关的知识,希望对你有一定的参考价值。
编程技巧:在Java应用开发中如何使用线程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java平台从开始就被设计成为多线程环境 在你的主程序执行的时候 其它作业如碎片收集和事件处理则是在后台进行的 本质上 你可以认为这些作业是线程 它们正好是系统管理线程 但是无论如何 它们是线程 线程使你能够定义相互独立的作业 彼此之间互不干扰 系统将交换这些作业进或出CPU 这样(从外部看来)它们好象是同时运行的 在你需要在你的程序中处理多个作业时 你也可以使用多个进程 这些进程可以是你自己创建的 你也可以操纵系统线程 你进行这些多作业处理 要使用几个不同的类或接口 java util Timer类 javax swing Timer类 Thread类 Runnable接口 对于简单的作业 通常需要重复的 你可以使用java util Timer类告诉它 每半秒钟做一次 注意 大多数系统例程是使用毫秒的 半秒钟是 毫秒 你希望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 ); System out println ( Press ENTER to stop ); System in read(new byte[ ]); 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 )); contentPane add(label BorderLayout CENTER); ActionListener listener = new ActionListener() int count = ; public void actionPerformed (ActionEvent e) count++; label setText (Integer toString(count)); ; Timer timer = new Timer( listener); timer start(); frame setSize( ); frame show(); 上述程序的结果是 > 万一你要做的不是一个简单的重复作业 java lang Thread类就派上了用场 它允许你自己控制基本功能 通过创建Thread的一个子类 你可以使你的系统脱离 并进行一个长时间运行的作业 如从网络上读取一个文件 而不阻碍你的其它程序的运行 这种长时间运行的作业将在run方法中定义 第二种方式是创建Thread类的子类并在子类中实现run方法 或在实现runnable的类中实现run方法 并将这个实现传递给Thread的构造函数 你可能会问有什么区别 Java编程语言仅支持单一继承 如果你设计的调用是除了Thread以外的其它类 你可以是你的类实现Runnable 而它可以是你的作业被执行 否则 你定义Thread的子类来运行你的Run方法 在处理过程中不再添加其它操作 对于创建Thread子类的第三种情况 下面的程序生成了一个新的线程来计算一个特定URL的字符数 这个URL是通过命令行传递进来的 在这进行过程之中 实现Runnable的第四种情况被演示 打印出重复的消息 注意在实现Runnable的这后一种情况下 你必须提供重复消息的代码 你必须同时sleep 以分配时间并完成操作 在两种情况下 与使用Timer相比较 这段程序的最后一部分包含有你从命令行读取命令以触发程序结束 注意在系统读取URL并打印消息的同时 你总可以按Enter键结束程序 import java io *; import *; public class Both public static void main(String args[]) final String urlString = args[ ]; final String message = args[ ]; Thread thread = 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 = ; while (reader read() != ) 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 ); ; thread start(); Runnable runnable = new Runnable() public void run() while(true) System out println(message); try Thread sleep( ); catch (InterruptedException e) ; Thread thread = new Thread(runnable); thread 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( ); 因为有多种方式来处理线程 你选用哪种技术取决于你和你面临的条件 要成为一个有效的Java编程人员 尽管你通常不必学习Java编程语言的所有内容和核心库 但是线程是一个例外 你越早了解线程如何工作和如何使用线程 你将越早了解Java程序如何工作和交互 cha138/Article/program/Java/gj/201311/27654相关参考
使用技巧:Java程序开发中如何应用线程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java程序开发中如何应用线程[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n
Java程序开发中如何应用线程[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n
Java开发中多线程同步技巧[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb
Java开发中多线程同步技巧[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb
Java开发中多线程同步技巧[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb
JavaSwing开发中的线程安全 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! SwingAP
Java开发中的线程安全选择与Swing 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Swin
Java多线程开发之线程局部变量的使用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &
在实际应用中很多情况需要定时运行程序比如分钟或者小时执行一次程序对此操作java和C#一样可以使用Timer计时器实现即javautilTimer中的Timer类 Timer的定义Timerti