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--+"张票");
}
}
}
运行结果图


浙公网安备 33010602011771号