java线程_计算机软件及应用_IT计算机_专业资料

java线程_计算机软件及应用_IT计算机_专业资料

ID:41566731

大小:61.68 KB

页数:5页

时间:2019-08-27

java线程_计算机软件及应用_IT计算机_专业资料_第1页
java线程_计算机软件及应用_IT计算机_专业资料_第2页
java线程_计算机软件及应用_IT计算机_专业资料_第3页
java线程_计算机软件及应用_IT计算机_专业资料_第4页
java线程_计算机软件及应用_IT计算机_专业资料_第5页
资源描述:

《java线程_计算机软件及应用_IT计算机_专业资料》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Java创建线程的两个方法Java捉供了线程类Thread来创建多线程的程序。其实,创建线程与创建普通的类的对彖的操作是一样的,而线程就是Thread类或其子类的实例对彖。每个Thread对彖描述了一个单独的线程。要产生一个线程,有两种方法:♦需要从Java.Iang.Thread类派生一个新的线程类,重载它的run()方法;♦实现Runnalbe接口,重载Runnalbe接口中的run()方法。为什么Java要提供两种方法來创建线程呢?它们都右哪些区别?相比而言,哪一种方法更好呢?在Java中,类仅支持单继承,也就是说,当定义一个新的类的时候,它只能扩展一个外部类•这样,如果创建自定义

2、线程类的时候是通过扩展Thread类的方法来实现的,那么这个自定义类就不能再去扩展其他的类,也就无法实现更加复杂的功能。因此,如果自定义类必须扩展其他的类,那么就可以使用实现Runnable接口的方法来定义该类为线程类,这样就可以避免Java单继承所带来的局限性。述有-点最重要的就是使用实现Runnable接口的方式创建的线程可以处理同一资源,从而实现资源的共享.(1)通过扩展Thread类来创建多线程假设一个影院有三个售票口,分别用于向儿童、成人和老人售票。影院为每个窗口放有100张电影票,分别是儿童票、成人票和老人票。三个窗口需要同时卖票,而现在只有一个售票员,这个售票员就相当于一个

3、CPU,三个窗口就相当于三个线程。通过程序來看一看是如何创建这三个线程的。publicclassMutliThreadDemo{publicstaticvoidmain(String[]args){MutliThreadml二newMutliThread(,ZWindow1〃);MutliThreadm2=newMutliThread("Window2〃);MutliThreadm3=newMutliThread(''Window3〃);ml.start();m2,start();8m3,start();}classlutliT

4、hreadextendsThread{privateintticket=100;//每个线程都拥有100张票kitliThread(Stringname){super(name);//调用父类带参数的构造方法}publicvoidrun(){while(ticket>0){Systcm.out.println(ticket一一+"issaledbyZ,+Thread・currcntThread()・gctName());}}}程序中定义一个线程类,它扩展了Thread类。利用扩展的线程类在MutliThreadDem。类的主方法中创建了三个线程对象,并通过start()方

5、法分别将它们启动。从结果可以看到,每个线程分别对应100张电影票,之间并无任何关系,这就说明每个线程之间是平等的,没有优先级关系,因此都有机会得到CPU的处理。但是结杲显示这三个线程并不是依次交替执行,而是在三个线程同时被执行的情况厂有的线程被分配时间片的机会多,票被提前卖完,而有的线程被分配时间片的机会比较少,票迟一些卖完。可见,利用扩展Thread类创建的多个线程,虽然执行的是相同的代码,但彼此相互独立,且各自拥有自己的资源,互不干扰。(2)通过实现Runnable接口来创建多线程1publicclassMutliThrea

6、dDemo2{2publicstaticvoidmain(String[]args){MutliThreadml=newMut1iThread(''Window1〃);MutliThreadm2二newMut1iThread(''Window2");Mut1iThreadm3=newMutliThread("Window3");Threadtl二newThread(ml);Threadt2二newThread(m2);Threadt3二newThread(m3);tl.start();t2.start();t3.start();}}classMut1iThreadimplementsRu

7、nnable{privateintticket=100;//每个线程都拥有100张票privateStringname;Mut1iThread(Stringname){this,name二name;}publicvoidrun(){while(ticket>0){System.out.println(ticket一一+〃issaledby”+name);}}}〈/span〉itT丁这三个线程也是彼此独立,各自拥有自己的资源,即100

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。