当前位置: 首页 > news >正文

济南设计网站宣传册设计与制作费用

济南设计网站,宣传册设计与制作费用,个人简历html网页模板,厦门 公司网站建设Java提供了线程类Thread来创建多线程的程序。其实#xff0c;创建线程与创建普通的类的对象的操作是一样的#xff0c;而线程就是Thread类或其子类的实例对象。每个Thread对象描述了一个单独的线程。要产生一个线程#xff0c;有两种方法#xff1a;◆需要从Java.lang.Thre…Java提供了线程类Thread来创建多线程的程序。其实创建线程与创建普通的类的对象的操作是一样的而线程就是Thread类或其子类的实例对象。每个Thread对象描述了一个单独的线程。要产生一个线程有两种方法◆需要从Java.lang.Thread类派生一个新的线程类重载它的run()方法◆实现Runnalbe接口重载Runnalbe接口中的run()方法。为什么Java要提供两种方法来创建线程呢它们都有哪些区别相比而言哪一种方法更好呢在Java中类仅支持单继承也就是说当定义一个新的类的时候它只能扩展一个外部类.这样如果创建自定义线程类的时候是通过扩展 Thread类的方法来实现的那么这个自定义类就不能再去扩展其他的类也就无法实现更加复杂的功能。因此如果自定义类必须扩展其他的类那么就可以使用实现Runnable接口的方法来定义该类为线程类这样就可以避免Java单继承所带来的局限性。还有一点最重要的就是使用实现Runnable接口的方式创建的线程可以处理同一资源从而实现资源的共享.1、通过扩展Thread类来创建多线程假设一个影院有三个售票口分别用于向儿童、成人和老人售票。影院为每个窗口放有100张电影票分别是儿童票、成人票和老人票。三个窗口需要同时卖票而现在只有一个售票员这个售票员就相当于一个CPU三个窗口就相当于三个线程。通过程序来看一看是如何创建这三个线程的。public class MutliThreadDemo {public static void main(String[] args) {MutliThread m1new MutliThread(Window 1);MutliThread m2new MutliThread(Window 2);MutliThread m3new MutliThread(Window 3);m1.start();m2.start();m3.start();}}public class MutliThread extends Thread {private int ticket100;//每个线程都拥有100张票public MutliThread (){}public MutliThread (String name){super(name);}Overridepublic void run() {while(ticket0){System.out.println(ticket-- is saled by Thread.currentThread().getName());}}}程序中定义一个线程类它扩展了Thread类。利用扩展的线程类在MutliThreadDemo类的主方法中创建了三个线程对象并通过start()方法分别将它们启动。从结果可以看到每个线程分别对应100张电影票之间并无任何关系这就说明每个线程之间是平等的没有优先级关系因此都有机会得到CPU的处理。但是结果显示这三个线程并不是依次交替执行而是在三个线程同时被执行的情况下有的线程被分配时间片的机会多票被提前卖完而有的线程被分配时间片的机会比较少票迟一些卖完。可见利用扩展Thread类创建的多个线程虽然执行的是相同的代码但彼此相互独立且各自拥有自己的资源互不干扰。2、通过实现Runnable接口来创建多线程public class MutliThreadDemo {public static void main(String[] args) {MutliThread m1new MutliThread(Window 1);MutliThread m2new MutliThread(Window 2);MutliThread m3new MutliThread(Window 3);Thread t1new Thread(m1);Thread t2new Thread(m2);Thread t3new Thread(m3);t1.start();t2.start();t3.start();}}public class MutliThread implements Runnable{private int ticket100;//每个线程都拥有100张票private String name;MutliThread(String name){this.namename;}public void run(){while(ticket0){System.out.println(ticket-- is saled by name);}}}由于这三个线程也是彼此独立各自拥有自己的资源即100张电影票因此程序输出的结果和 1 结果大同小异。均是各自线程对自己的100张票进行单独的处理互不影响。可见只要现实的情况要求保证新建线程彼此相互独立各自拥有资源且互不干扰采用哪个方式来创建多线程都是可以的。因为这两种方式创建的多线程程序能够实现相同的功能。3、通过实现Runnable接口来实现线程间的资源共享现实中也存在这样的情况比如模拟一个火车站的售票系统假如当日从A地发往B地的火车票只有100张且允许所有窗口卖这100张票那么每一个窗口也相当于一个线程但是这时和前面的例子不同之处就在于所有线程处理的资源是同一个资源即100张车票。如果还用前面的方式来创建线程显然是无法实现的这种情况该怎样处理呢看下面这个程序程序代码如下所示public class MutliThreadDemo {public static void main(String[] args) {MutliThread mnew MutliThread();Thread t1new Thread(m);Thread t2new Thread(m);Thread t3new Thread(m);t1.start();t2.start();t3.start();}}public class MutliThread implements Runnable{private int ticket100;//每个线程都拥有100张票public void run(){while(ticket0){System.out.println(ticket-- is saled by Thread.currentThread());}}}结果正如前面分析的那样程序在内存中仅创建了一个资源而新建的三个线程都是基于访问这同一资源的并且由于每个线程上所运行的是相同的代码因此它们执行的功能也是相同的。可见如果现实问题中要求必须创建多个线程来执行同一任务而且这多个线程之间还将共享同一个资源那么就可以使用实现Runnable接口的方式来创建多线程程序。而这一功能通过扩展Thread类是无法实现的读者想想看为什么实现Runnable接口相对于扩展Thread类来说具有无可比拟的优势。这种方式不仅有利于程序的健壮性使代码能够被多个线程共享而且代码和数据资源相对独立从而特别适合多个具有相同代码的线程去处理同一资源的情况。这样一来线程、代码和数据资源三者有效分离很好地体现了面向对象程序设计的思想。因此几乎所有的多线程程序都是通过实现Runnable接口的方式来完成的。
http://wiki.neutronadmin.com/news/79882/

相关文章:

  • 一级a做爰片365网站深圳画册设计师
  • 做网站的技术哪个简单为什么做网站还要续费
  • 怎么做建设网站莱芜在线电话
  • 那种非法网站怎么做的内部网站建设依据文件
  • wordpress首页筛选厦门seo外包平台
  • 潍坊公司网站模板建站公众号排版编辑器app
  • 网站开发常用插件怎么建立信息网站平台
  • 有没有工程外包的网站网站建设企业熊掌号
  • 中山做百度网站的公司吗数字创意设计包括哪些行业
  • 肥西县重点工程建设管理局网站wordpress教程文档
  • 网站建设平台的比较怎么开发自己的网站
  • 华为弹性云做网站查网站备案号
  • 南阳seo网站建设费用百度提交入口网站网址
  • 网站建设可行性分析报告南宁新站seo
  • 免费wordpress网站access 可以做网站不
  • 网站建设 自适应企业vi设计策划书
  • 网站推广效益怎么分析东莞品牌网站设计
  • 网站更改了资料 百度什么时侯来抓取wordpress 编辑器 空格
  • 制作企业网站的流程凡科能上传自己做的网站
  • 给人做ppt的网站吗软件工程培训班出来好就业吗
  • 做面点的网站网站建设工作策划方案
  • 做网站商城如何优化wordpress大前端模板下载
  • 淮北市建设局网站注册网站会有哪些风险
  • 网页模板怎么做网站买了域名不备案行吗
  • 自媒体自助下单网站怎么做去哪儿网站开发
  • 青岛专业网站制作设计杭州人才招聘网
  • 数据库网站建设教程wordpress自己写代码
  • 唐山网站建设冀icp备网址链接
  • 松原企业网站建设郑州七彩网站建设公司 交通
  • 西安市规划建设局网站网站加入wordpress