第一种 :继承Thread类(Thread实现Runnable接口)
用继承类创建对象然后使用
使用代码(案例:多个窗口卖票)
这里用SellTicket extends Thread,然后通过SellTicket创建对象,使用线程方法。
public class SellTicketDemo {
public static void main(String[] args) {
// 创建三个线程对象
SellTicket st1 = new SellTicket();
SellTicket st2 = new SellTicket();
SellTicket st3 = new SellTicket();
// 给线程对象起名字
st1.setName("窗口1");
st2.setName("窗口2");
st3.setName("窗口3");
// 启动线程
st1.start();
st2.start();
st3.start();
}
}
public class SellTicket extends Thread {
// 定义100张票
// private int tickets = 100;
// 为了让多个线程对象共享这100张票,我们其实应该用静态修饰
private static int tickets = 100;
@Override
public void run() {
while (tickets > 0) {
System.out.println(getName() + "正在出售第" + (tickets--) + "张票");
}
}
}
第二种 通过实现Runnable接口
实现接口runnable后需要通过
SellTicket2 st = new SellTicket2();
Thread t1 = new Thread(st);
来使用线程。
使用方法(案例:多个窗口卖票)
public class SellTicketDEmo2 {
public static void main(String[] args) {
// 创建资源对象
SellTicket2 st = new SellTicket2();
// 创建三个线程对象
Thread t1 = new Thread(st, "窗口1");
Thread t2 = new Thread(st, "窗口2");
Thread t3 = new Thread(st, "窗口3");
// 启动线程
t1.start();
t2.start();
t3.start();
}
}
public class SellTicket2 implements Runnable {
// 定义100张票
private int tickets = 100;
@Override
public void run() {
while (true) {
if (tickets > 0) {
System.out.println(Thread.currentThread().getName()
+ "正在出售第" + (tickets--) + "张票");
}
}
}
}