Java多线程程序筹划初步入门[Java编程]
本文“Java多线程程序筹划初步入门[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在Java语言产生前,传统的程序计划语言的程序同一时刻只能单任务操作,效率非常低,比方程序常常在接纳数据输入时发生阻塞,只有等到程序得到数据后才能持续运行. 随着Internet的迅猛发展,这种情况越来越不能让人们忍耐:假如网络接纳数据阻塞,后台程序就处于等候状况而不持续任何操作,而这种阻塞是常常会碰到的,此时CPU资源被白白的闲置起来.假如在后台程序中可以同时处理多个任务,该多好啊!应Internet技术而生的Java语言办理了这个问题,多线程程序是Java语言的一个很重要的特点.在一个Java程序中,我们可以同时并行运行多个相对独立的线程,比方,我们假如成立一个线程来举行数据输入输出,而成立另一个线程在后台举行别的的数据处理,假如输入输出线程在接纳数据时阻塞,而处理数据的线程仍旧在运行.多线程程序计划大大提高了程序履行效率和处理本领.
线程的成立
我们知道Java是面向对象的程序语言,用Java举路程序计划就是计划和利用类,Java为我们供应了线程类Thread来成立线程,成立线程与成立普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象.下面是一个成立启动一个线程的语句:
|
从这个例子,我们可以通过Thread()构造办法成立一个线程,并启动该线程.事实上,启动线程,也就是启动线程的run()办法,而Thread类中的run()办法没有任何操作语句,所以这个线程没有任何操作.要使线程实现预定功效,必须定义自己的run()办法.Java中普通有两种方法定义run()办法:
通过定义一个Thread类的子类,在该子类中重写run()办法.Thread子类的实例对象就是一个线程,明显,该线程有我们自己计划的线程体run()办法,启动线程就启动了子类中重写的run()办法.
通过Runnable接口,在该接口中定义run()办法的接口.所谓接口跟类非常近似,主要用来实现特别功效,如复杂关系的多重担当功效.在此,我们定义一个实现Runnable() 接口的类,在该类中定义自己的run()办法,然后以该类的实例对象为参数调用Thread类的构造办法来成立一个线程.
线程被实际成立后处于待命状况,激活(启动)线程就是启动线程的run()办法,这是通过调用线程的start()办法来实现的.
下面一个例子实践了若何通过上述两种办法成立线程并启动它们:
// 通过Thread类的子类成立的线程; class thread1 extends Thread { file://自定义线程的run()办法; public void run() { System.out.println("Thread1 is running…"); } } file://通过Runnable接口成立的别的一个线程; class thread2 implements Runnable { file://自定义线程的run()办法; public void run() { System.out.println("Thread2 is running…"); } } file://程序的主类' class Multi_Thread file://声明主类; { plubic static void mail(String args[]) file://声明主办法; { thread1 threadone=new thread1(); file://用Thread类的子类成立线程; Thread threadtwo=new Thread(new thread2()); file://用Runnable接口类的对象成立线程; threadone.start(); threadtwo.start(); file://strat()办法启动线程; } }
运行该程序便可以看出,线程threadone和threadtwo交替占用CPU,处于并行运行状况.可以看出,启动线程的run()办法是通过调用线程的start()办法来实现的(见上例中主类),调用start()办法启动线程的run()办法差别于普通的调用办法,调用普通办法时,必须等到普通办法履行完毕才可以返回start()办法,而启动线程的run()办法后,start()奉告系统该线程预备就绪可以启动run()办法后,就返回start()办法履行调用start()办法语句下面的语句,这时run()办法大概还在运行,这样,线程的启动和运行并行举行,实现了多任务操作.
线程的优先级
关于多线程程序,每个线程的重要程度是不尽相同,如多个线程在等候得到CPU时间时,常常我们需求优先级高的线程优先抢占到CPU时间得以履行;又如多个线程交替履行时,优先级决意了级别高的线程得到CPU的次数多一些且时间多长一些;这样,高优先级的线程处理的任务效率就高一些.
Java中线程的优先级从低到高以整数1~10表示,共分为10级,设置优先级是通过调用线程对象的setPriority()办法,如上例中,设置优先级的语句为:
thread1 threadone=new thread1(); file://用Thread类的子类成立线程; Thread threadtwo=new Thread(new thread2()); file://用Runnable接口类的对象成立线程; threadone.setPriority(6); file://设置threadone的优先级6; threadtwo.setPriority(3); file://设置threadtwo的优先级3; threadone.start(); threadtwo.start(); file://strat()办法启动线程; |
这样,线程threadone将会优先于线程threadtwo履行,并将占据更多的CPU时间.该例中,优先级设置放在线程启动前,也可以在启动后举行设置,以满意差别的优先级需求.
以上是“Java多线程程序筹划初步入门[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |