当前位置:七道奇文章资讯编程技术Java编程
日期:2011-01-26 02:54:00  来源:本站整理

<b>经验分享:对Java中的线程感触</b>[Java编程]

赞助商链接



  本文“<b>经验分享:对Java中的线程感触</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

    1.进程和线程的辨别

    通俗一点说,进程就是程序的一次履行,而线程可以理解为进程中的履行的一段程序片段.

    用一点文词说就是,每个进程都有独立的代码和数据空间(进程上下文);而线程可以当作是轻量级的进程.普通来说(不利用特别技术),同一进程所产生的线程同享同一块内存空间.

    同一进程中的两段代码是不大概同时履行的,除非引入线程.

    线程是属于进程的,当进程退出时该进程所产生的线程城市被强迫退出并排除.

    线程占用的资源要少于进程所占用的资源.

    进程和线程都可以有优先级.

    在线程系统中进程也是一个线程.可以将进程理解为一个程序的第一个线程.

    多进程——在操作系统中,能同时运行多个任务(程序).

    多线程——在同一利用程序中,有多个次序流同时履行.

    2.通过铁路售票程序来理解实现多线程的两种办法:通过java.lang.Thread类和通过Runnable接口

    java中有两种实现多线程的方法.一是直接担当Thread类,二是实现Runnable接口.那么这两种实现多线程的方法在利用上有什么辨别呢?

    为了答复这个问题,我们可以通过编写一段代码来举行解析.我们用代码来模拟铁路售票系统,实现通过四个售票点发售某日某次列车的100张车票,一个售票点用一个线程表示.

    我们首先这样编写这个程序:

public class ThreadDome1{
  public static void main(String[] args){
    ThreadTest t = new ThreadTest();
    t.start();
    t.start();
    t.start();
    t.start();
  }
}

class ThreadTest extends Thread{
  private int ticket = 100;
  public void run(){
    while(true){
      if(ticket > 0){
        System.out.println(Thread.currentThread().getName() +
          "is saling ticket" + ticket--);
      }else{
        break;
      }
    }
  }
}

    上面的代码中,我们用ThreadTest类模拟售票处的售票历程,run办法中的每一次循环都将总票数减1,模拟卖出一张车票,同时该车票号打印出来,直接剩余的票数到零为止.在ThreadDemo1类的main办法中,我们成立了一个线程对象,并反复启动四次,但愿通过这种方法产生四个线程.从运行的后果来看我们发现其实只有一个线程在运行,这个后果奉告我们:一个线程对象只能启动一个线程,无论你调用多少遍start()办法,后果只有一个线程.

    我们接着改正ThreadDemo1,在main办法中成立四个Thread对象:

public class ThreadDemo1{
  public static void main(String[] args){
    new ThreadTest().start();
    new ThreadTest().start();
    new ThreadTest().start();
    new ThreadTest().start();
  }
}

class ThreadTest extends Thread{
  private int ticket = 100;
  public void run(){
    while(true){
      if(ticket > 0){
        System.out.println(Thread.currentThread().getName() +
           " is saling ticket" + ticket--);
      }else{
        break;
      }
    }
  }
}


  以上是“<b>经验分享:对Java中的线程感触</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .