day04-了解多线程

多线程

要想实现多线程,常用的有两种办法

第一种

继承Thread类

package 多线程;

public class MyThread extends Thread {
	public void run() {
		System.out.println("我的线程启动!");
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		MyThread mythread = new MyThread();
		mythread.start();
		// TODO Auto-generated method stub
		System.out.println("Main线程启动!");
	}

}

第二种

继承Run

package 多线程;
public class MyThread01 implements Runnable {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		MyThread01 my = new MyThread01();
		new Thread(my).start();
		// TODO Auto-generated method stub
		System.out.println("Main线程启动!");

	}
	public void run() {
		// TODO Auto-generated method stub
		System.out.println("MyThread线程启动!");
	}

}

基本的多线程模拟购火车票,会出现问题

package 多线程;

public class MyThread02 implements Runnable {
	private int ballot = 10;//总共10张票
	/**
	 * 模拟抢购火车票
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MyThread02 my = new MyThread02();
		new Thread(my,"小明").start();
		new Thread(my,"张老师").start();
		new Thread(my,"黄牛").start();
	}
	public void run() {
		// TODO Auto-generated method stub
		while(true){
			if(ballot<=0){
				break;
			}
			//网络购票时网络有延迟,这里用sleep模拟一下
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			System.out.println(Thread.currentThread().getName()+"购买了第"+ballot--+"张票");
		}
	}

}

运行结果图

image-20210705220749664

posted @ 2021-07-05 22:13  小码农ya  阅读(34)  评论(0)    收藏  举报