欢迎来到天天文库
浏览记录
ID:20283139
大小:67.00 KB
页数:10页
时间:2018-10-11
《java多线程与枚举类型应用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Java多线程和枚举类型应用lJava多线程针对于计算机cpu而言,同一时间完成多个任务(实际:计算机cpu在同一时间只能做一件事情)。计算机能够将cpu处理的时间点分割成微小的时间片段(人没有办法察觉),让多个任务根据任务的优先级去执行。从而给人造成一个时间(人能够体会时间)感觉好像多个任务同时执行。lJava支持多线程。提供两种方式来处理多线程程序。nJavaapi提供了Thread类,让想实现多线程功能的类去extends这个类,从而该子类就具备多线程的功能。n对于已经继承了某个父类的子类来说,如果这个子类需要实现多线程任务,根据ja
2、va单一继承的规定,该子类不能extendsThread,所以java提供了一个Runable接口,让该子类implements该接口,从而完成多线程的任务。MainFun1Fun2创建新执行线程有两种方法。一种方法是将类声明为Thread的子类。该子类应重写Thread类的run方法。接下来可以分配并启动该子类的实例。例如,计算大于某一规定值的质数的线程可以写成:classPrimeThreadextendsThread{longminPrime;PrimeThread(longminPrime){this.minPrime=minPri
3、me;}publicvoidrun(){//computeprimeslargerthanminPrime . . .}}然后,下列代码会创建并启动一个线程:PrimeThreadp=newPrimeThread(143);p.start();创建线程的另一种方法是声明实现Runnable接口的类。该类然后实现run方法。然后可以分配该类的实例,在创建Thread时作为一个参数来传递并启动。采用这种风格的同一个例子如下所示:classPrimeRunimplementsRunnable{longminPrime;PrimeRun(longm
4、inPrime){this.minPrime=minPrime;}publicvoidrun(){//computeprimeslargerthanminPrime . . .}}然后,下列代码会创建并启动一个线程:PrimeRunp=newPrimeRun(143);newThread(p).start();每个线程都有一个标识名,多个线程可以同名。如果线程创建时没有指定标识名,就会为其生成一个新名称。l多线程的应用n举例:packagecom.wokit.part1;publicclassDemo01extendsThread{priv
5、ateStringname;publicDemo01(Stringname){super();this.name=name;}/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubDemo01aa=newDemo01("子线程");aa.start();for(inti=0;i<5;i++){System.out.println("主程序start:"+i);try{Thread.sleep(1000);}catch(Interrup
6、tedExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}}@Overridepublicvoidrun(){//TODOAuto-generatedmethodstubsuper.run();for(inti=0;i<5;i++){System.out.println(this.name+"start:"+i);try{this.sleep(1000);}catch(InterruptedExceptione){//TODOAuto-generatedcatchb
7、locke.printStackTrace();}}}}n举例2:packagecom.wokit.part1;publicclassDemo02implementsRunnable{privateStringname;publicDemo02(Stringname){super();this.name=name;}@Overridepublicvoidrun(){//TODOAuto-generatedmethodstubfor(inti=0;i<5;i++){System.out.println(this.name+"start:"+i
8、);try{Thread.sleep(1000);}catch(InterruptedExceptione){//TODOAuto-generatedcatchblocke.pr
此文档下载收益归作者所有