多线程的两种方法(卖票系统展示)

public  class MyThread1 implements Runnable{

    int i=20;
 String name;
    public MyThread1() {
        // TODO 自动生成的构造函数存根
        this.name=name;
    }

    public void run(){

        for(int x=0;x<20;x++){
            if(i>0){
                System.out.print(Thread.currentThread().getName()+"    ");
                System.out.println("售票窗口:"+"  "+"余票\t"+i--);

            }
        }
    }
}
 class Test{
    public static void main(String []args){

        MyThread1 myth1=new MyThread1();//创建线程对象

        new Thread(myth1,"线程1").start();

        new Thread(myth1,"线程2").start();

        new Thread(myth1,"线程3").start();
//        myth1.start();
//        myth1.start();
//        myth1.start();
    }
}————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————20张票的输出结果:为三个线程共卖出20张票
public class MyThread extends Thread{
//String name;
int i=20;

public void run (){
    for(int x =0;x<20;x++){
        if(i>0){
            System.out.println("卖票"+"     "+"余票\t="+i--);
        }
    }
}
////
}
//创建了三个线程,每个线程售出20张票
 class TestDemo{
    public static void main(String []args){
    MyThread myth1=new MyThread();
    MyThread myth2=new MyThread();
    MyThread myth3=new MyThread();
    myth1.start();
    myth2.start();
    myth3.start();

    }
}————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————20张票的输出结果为:三个线程每个卖出20张,共卖出60张票
时间: 2024-10-03 13:47:38

多线程的两种方法(卖票系统展示)的相关文章

实现多线程的两种方法:继承Thread类或实现Runnable接口

实现多线程的两种方法:继承Thread类或实现Runnable接口 Java中实现多线程有两种方法:继承Thread类和实现Runnable接口,在程序开发中只要是多线程,我们一般都是实现Runnable接口,原因归结为一点:实现接口比继承类要好. 多线程的第一种实现方式:继承Thread类 步骤如下 创建一个继承Thread的类(假定为A),并重写Thread的run方法 构造一个A类对象,假定为aa 调用aa的start方法.(start方法是从Thread继承过来的) 具体例子如下 pac

多线程的使用实列-卖票系统

#import "ViewController.h" @interface ViewController () { UILabel *showLable; int curTicketNum; int saleTicketNum; NSString *saleWindowName; NSCondition *conditionClock; } @end @implementation ViewController - (void)viewDidLoad { [super viewDidL

java 实现多线程的两种方式

一.问题引入 说到这两个方法就不得不说多线程,说到多线程就不得不提实现多线程的两种方式继承Thread类和实现Runable接口,下面先看这两种方式的区别. 二. Java中实现多线程的两种方式 1.  继承Thread类 /** * 使用Thread类模拟4个售票窗口共同卖100张火车票的程序,实际上是各卖100张 */ public class ThreadTest { public static void main(String[] args){ new MyThread().start(

在装完Linux系统之后自己去修改Swap分区的大小(两种方法)

在装完Linux系统之后自己去修改Swap分区的大小(两种方法) 在安装完Linux系统后,swap分区太小怎么办,怎么可以扩大Swap分区呢?有两个办法,一个是从新建立swap分区,一个是增加swap分区.下面介绍这两种方法: 第一您必须有root权限,过程中一定要很小心,一不小心就破坏了整个硬盘的数据,执行下面的过程之前您需要三思而行,错误操作后的后果由执行者自己承担. 新建swap分区 1.以root身份进入控制台,输入 # swapoff -a          #停止交换分区 2. 用

WPF多线程UI更新——两种方法

WPF多线程UI更新--两种方法 前言 在WPF中,在使用多线程在后台进行计算限制的异步操作的时候,如果在后台线程中对UI进行了修改,则会出现一个错误:(调用线程无法访问此对象,因为另一个线程拥有该对象.)这是很常见的一个错误,一不小心就会有这个现象.在WPF中,如果不是用多线程的话,例如单线程应用程序,就是说代码一路过去都在GUI线程运行,可以随意更新任何东西,包括UI对象.但是使用多线程来更新UI就可能会出现以上所说问题,怎么解决?本文章提供两个方法:Dispatcher(大部分人使用),T

Ubuntu系统启用IPv6的两种方法

IPv6就是我们通常所说的互联网协议,是TCP/IP的核心协议,那么在Linux下如何开启IPv6呢?下面以Ubuntu为例,给大家介绍下Ubuntu启用IPv6的方法. 方法: $sudo apt-get install miredo $ifconfig 在结果中应该能看见一个叫 teredo 的虚拟网卡. $ ping6 ipv6.google.com PING ipv6.google.com(2404:6800:8003::93) 56 data bytes 64 bytes from 2

java中实现多线程的两种基本方法

java中实现多线程有两种基本方法,一种是继承Thread, 另一种是实现Runnable接口. 但是因为java中子类只能继承一个父类,如果采用继承Thread类,就不能继承其他类,很受限制. 以下是采用继承Thread类的例子: public class MyThreadTest{ public static void main(String[] args){ MyThread amythread1=new MyThread("my thread 1"); MyThread amy

Linux系统实现虚拟内存有两种方法:交换分区(swap分区)和交换文件

Linux系统实现虚拟内存有两种方法:交换分区(swap分区)和交换文件 交换文件 查看内存:free -m , -m是显示单位为MB,-g单位GB 创建一个文件:touch /root/swapfile 使用dd命令,来创建大小为2G的文件swapfile: dd if=/dev/zero of=/root/swapfile bs=1M count=2048 //命令执行完需要等待一段时间 if表示input_file输入文件 of表示output_file输出文件 bs表示block_siz

(转)java创建线程的两种方法比较

Java提供了线程类Thread来创建多线程的程序.其实,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象.每个Thread对象描述了一个单独的线程.要产生一个线程,有两种方法: ◆需要从Java.lang.Thread类派生一个新的线程类,重载它的run()方法:  ◆实现Runnalbe接口,重载Runnalbe接口中的run()方法. 为什么Java要提供两种方法来创建线程呢?它们都有哪些区别?相比而言,哪一种方法更好呢? 在Java中,类仅支持单继承