java 多线程 两种方法

    xiaoxiao2021-04-18  69

    说明:实现多线程 一共有两种方法 1:继承Thread类,成为其子类,并且重写父类的run方法,直接建立子类对象,调用start方法,开启线程 2:实现Runnable接口,重写run方法--->建立实现接口的类的对象 和Thread类的对象,把该象作为参数,传给建立好的Thread类对象,然后由Thread类的对象调用start方法,开启线程 推荐使用第二种方法,因为java只支持单继承 示例代码 卖票100张,多线程实现可以同时卖票 方法1:继承Thread类------------------------ package com.softw.test; class Ticket extends Thread{ private static int ticket = 100; public void run() { while (ticket != 0) { if (ticket > 0) { System.out.println(currentThread().getName()+"sale:"+ticket--); } } } } public class SaleTicket { public static void main(String[] args) { Ticket ticket1 = new Ticket(); Ticket ticket2 = new Ticket(); Ticket ticket3 = new Ticket(); Ticket ticket4 = new Ticket(); ticket1.start(); ticket2.start(); ticket3.start(); ticket4.start(); } } 说明:此方法有较大的局限性,如果属性Ticket 不是 static ,那么就会 是建立四个对象,产生400张票,只有static 才会保持票数不变(因为需要多次开启,模拟多个窗口,才会建立四个对象),如果只建立一个对象,重复开启四次,就会报错 方法一截图: 方法2:实现Runnable 接口 ------------------------ package com.softw.test; class SaleTicketTwo implements Runnable{ private int ticket = 100; @Override public void run() { // TODO Auto-generated method stub while (ticket != 0) { if (ticket > 0) { System.out.println("sale:"+ticket--); } } } } public class ThreadTwo { public static void main(String[] args) { // TODO Auto-generated method stub SaleTicketTwo saleTicketTwo = new SaleTicketTwo(); Thread thread1 = new Thread(saleTicketTwo); Thread thread2 = new Thread(saleTicketTwo); Thread thread3 = new Thread(saleTicketTwo); Thread thread4 = new Thread(saleTicketTwo); thread1.start(); thread2.start(); thread3.start(); thread4.start(); } } 说明:通过这种方法建立的线程,就可以开启多次,且开启的还是同一个线程的对象 方法二截图:
    转载请注明原文地址: https://ju.6miu.com/read-674978.html

    最新回复(0)