您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页Java多线程技术浅析

Java多线程技术浅析

来源:华佗小知识
维普资讯 http://www.cqvip.com

\ 竺 Java多线程技术浅析 李艳玲 . 郑淑荣 (辽宁工程技术大学,阜新123000) 摘要:多线程程序,可以让计算机在同一段时间内并行处理不同的工作任务.实现多任务同时 工作。在Java程序中有两种方式创建线程,而用synchronized关键字来修饰线程的方法, 则可实现线程之间的同步,保证在同一时刻只有一个线程访问该方法,实现资源之间的 协商共享。 关t词:Java线程;多线程技术;线程同步 0引言 多线程技术是Java语言的一个重要特性。通过 编制多线程程序.可以让计算机在同一段时间内并行 处理不同的工作任务。 由于系统的Thread类中,run0方法没有具体内容。所 以用户创建自己的Thread类的子类时.需要在子类 中重新定义自己的"nO方法,这个runn方法中包含 了用户线程的操作。定义了Thl ̄ad子类后.程序中如 果需要使用线程时.只需要创建一个已定义好的 Thread子类的实例对_象就可以了。 1什么是线程 众所周知.程序是用某种语言编写的一段静态的 代码。可以理解成一组计算机指令的集合。而进程是 3.2间接方式创建线翟 由于Java不支持多继承性。如果用户需要类以 程序的一次动态执行过程,它对应了从代码加载、执 行到执行完毕的一个完整过程.这个过程也是进程本 身从产生、发展到消亡的过程。线程则是比进程更小 的执行单位.是进程内部单一的一个顺序控制流。 线程方式运行且继承其他所需要的类.就必须实现 Runnable接口。Runnable接口包含了与Thread一致的 基本方法。事实上,Runnable接13只有一个runO方法. 所以实现这个接13的程序必须要定义runO方法的具体 内容,用户新建线程的操作也由这个方法来决定。定义 好接口类后.程序中如果需要使用线程时.只要以这个 实现了run0方法的类为参数创建系统类Thread的对 象.就可以把实现的I'LlnO方法继承过来。 2线程的状态 每个Java程序都有一个缺省的主线程。对于Java 应用程序.主线程是mainO方法执行的线索;对于 Applet程序.主线程是指挥浏览器加载并执行Java Applet程序的线索。要想实现多线程,必须在主线程 中创建新的线程对象。任何线程一般具有五种状态. 即新建、就绪、运行、堵塞、死亡。 4线程优先级 在一个程序中可以建立多个线程.并通过调用 startO方法来启动线程.这些线程启动后。可以同时存 在、同时运行。形成多条执行线索,并于主程序运 行.即各个线程与主程序处于并行工作中。 那么.在众多的线程中,哪一个线程先执行。哪一 3在Java程序中如何创建线程 在Java程序中有两种方式创建线程:一种是直 理 代 接方式创建线程。即创建Thread类的子类:另一种是 个线程后执行呢?这取决于线程的优先级。线程的优先 级是个整数值,值愈高。愈先执行,值愈低。愈后执行。 线程的优先级可以在创建线程时设定.也可以通 过调用线程类的相应方法设置。 计 间接方式创建线程.即实现Runnable接13。 算 3.1直接方式创建线程 机 为创建一个线程.最简单的方法就是从Thread ^ ead类代表Java程序中单个的运行 总 类直接继承。Thr5线程之间的同步 并行执行的各个线程如需要访问同一个变量.如 第 线程.它综合了Java程序中一个线程需要拥有的属 二 性和方法.包含了创建和运行线程所需的一切东西。 收稿日期:2007—06-26 修稿日期:2007-10—08 七 三 v  ̄期 作者简介:(1963一),沈阳新民人,工程师,从事墙域为计算机基础教学研究及教学管理工作 @MODERN COMPUTER撕-12 维普资讯 http://www.cqvip.com / 实践与经验 ————————————————......../ / 一个线程A要为变量X赋值.而另一个线程B要读 取变量X的值.那么在线程A未对变量X完成赋值 之前.线程B就不能读取变量X的值,这应如何处理 呢?这时可用svnchronized关键字来修饰对变量X进 行访问的方法。这样当线程A调用这个方法后,其他 线程要调用这个方法就必须等待,直到线程A使用 完该方法后.其他线程方可使用。 用svnchronized说明的方法是同步方法.主要用 于多线程程序设计.用于保证在同一时刻只有一个线 程访问该方法.以实现线程之间的同步。同步方法是 实现资源之间的协商共享的保证方式 3程序示例 下面给出两个Applet程序。程序1运行后,在第 一个文本区域中显示的值不断增1.在第二个文本区 域中显示的值不断增2,说明两个线程同时存在,同 时运行。程序2运行后,虽然在第一个文本区域中显 示的值仍不断增1.在第二个文本区域中显示的值也 不断增2.但两个文本区域中显示的值是同一个变量 kl的值.由于采用了同步方法。文本区域1中的值在 增1时.文本区域2中的值不变.文本区域2中的值 在增2时.文本区域1中的值不变。即当进程1调用XC 方法时,进程2必须等待,而当进程2调用XC方法时, 进程1必须等待.说明了线程之间同步的作用。 程序l关键代码为: publi C class Appletl extends Applet implements Runnable { int kl=O,k2=0; TextArea text1=new TextArea(18,8),text2=new TextArea(18,8); Label 11=new Labelf”线程1:每次将文本框中的值加 1”); label 12=new labelf”线程2:每次将文本框中的值加 2”); Thread XC1=null; Thread xc2=null; public void init0 { XC 1=new Thread(this); xc2=new Thread(this); add(11); add(12); add(text1); add(text2); } public void start0 { xc1.start0; xc2.start0; J public void xc0 { if(Thread.currentThread0==xc1){ for(int i=l;i<=3;i++1 . { kl=kl+1: try{Thread.sleep(500);l catch ̄xception e)” text1.append ̄1+”\n“); J J else if(Thread.currenthTread0==xc21 { f0r(int i=l;i<=3;i++) { k2=k2+2: try{Thread.sleep(500);l catch ̄xception e)” text2.appendS2+”\n”); l J l public void mn0 { ifCFhread.currenthTread0==xc1 II Thread.current— Thread0==xc2) f0r(int i=l;i(=5;i++)xcO; l J 程序2关键代码为: public synchronized void xc0 { if(Thread.currenthTread0==xc l1 { f nt i=l;i<:3;i++) { kl=kl+1: try{hTread.sleep(500);l catch(Exception e)” text1.append ̄1+”\n”); l J 现 else if(Thread.currenthTread0==xc2) 代 { 计 for(int i=l;i<=3;i++) 算 { 机 kl=kl+2: ^ try{Thread.s|eep(500);} 总 catch(Exception e){l 第 text2.append(k 1+”\n”); 二 J 七 l 三 期 MODERN COM PUTER舢.12④ 维普资讯 http://www.cqvip.com \ public void rn0 a{ 竺竺竺 参考文献 【l】卜照斌等.Java 2编程详解.北京:电子工业出版社 iff,Ihr嘲Id.currentThread0==xc1 II Thread.current- Thread0==xc2) fot(int i=l;i<=5;i++)xc0; } 【2]郝志芬等译.Java宝典.北京:电子工业出版社,1999 【3】李卓玲等.Java程序设计实用教程.大连:大连理工出版 社.2002 Brief Analysis of Java Multithreading Technoloily 一 一- LI Yan—ling ,ZHENG Shu-rong (Liaoning Technology University,Fuxin 123000) Abstract: I1le mulfithreading program may let computer process diferent tasks parallelly in the identi- cal itme to fulifll the mulit-duties work simultaneously.In the Java language.there are two manners to create a thread.while凼e synchronous between more procedures can be reallized by mean8 of decoration wih tthe synchronized keywords,80 code sharing of multith ̄dins procedure can bereached. Keywords:Java;Multithreading Technology;Thread Synchronous (上接第42页) 参考文献 【1】c.T.Hsu,印d J.L.Wu,Multiresolution Watermarking for Dj— gital Images,IEEE Trans.on Circuits and SystemⅡ’1998, ad Waternmarking Technologies.IEEE Trans on SP,1998, 86(6):1064-1078 [6]Stephane.G.Mallat.A Theory for Multiresolution Sisn ̄De_- composition:The Wavelet Representation.IEEE Tram.on 45(8):1097-1 101 【2]C.T Hsu,nd aJ.L.Wu,Hidden Digital Watermarks in Inlgges, IEEE Trans.on Image Processing,1999,8(1):58-68 【3]Ij.Cox,J.Kilian,F.T.Leighton,T.Shamoon,Secure Spread Specnum Watermarking for Multimedia,IEEE Trans.on Im— PaRern Analysis nda Machine InteHigence,1989,l 1(7):674~ 693 age Processing,1997,6(1 2):1673 ̄1686 [4]K.K.Wong,Adaptive Watermarking,IEEE Trans.on Con- sumer Elcteronics,1997,43(4):1003-1009 M Multimedia Data Embedding f7】刘贵忠,邸双亮.小波分析及其应用.西安:西安电子科技 大学出版社.1992 f8】李永忠.基于小波变换的图像可分级压缩编码.计算机 应用与软件,2005f2):95~98 f9】李永忠.一种基于小波变换的多分辨率数字水印新算法. 计算机应用研究,2004f9):956-958 Research on Digital Watermarking Algorithm Based on Block Wavelet Transform YU Rui-qin .Li Yong-zhong (1.School of Elcteries nd aInfomatrion,Jingsau Universiyt of Science and Technology,Zhenjing 21a2003; 2.Eleciton&Information Department,Zhenjinga College,Zhenjing 21a2003) Abstract:Proposes n alagoirhm otf diigtal watermark based on block wavelet Ixansofrm.Each pixel of a watermark is embedded in the wavelet coefficient ofthe middle and low frequency of a block in the images.Experiments show,the diigtla watermark is robust enough to image degradation. Keywords:Diigtal Watermark;Wavelet Trnsaform;Copyrihtg Protection o MODERN COMPUTER 2007_l2 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务