说明:实现多线程 一共有两种方法
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