线程实现的第一种方式(继承Thread类)、
下面介绍一个三窗口买票问题
package com.yk.java;
/**
* 三窗口买票
*/
class Windows extends Thread{
private static int ticket=100;
@Override
public void run() {
while (true){
if(ticket>0){
System.out.println(getName()+"买到了,票号是"+ticket);
ticket--;
}else {
break;
}
}
}
}
public class ThreadDemo{
public static void main(String[] args) {
Windows w1=new Windows();
Windows w2=new Windows();
Windows w3=new Windows();
w1.start();
w2.start();
w3.start();
}
}
首先创建一个继承Thread类的类,接着在类中重写run方法,最后在主函数中创建对象,通过对象来调用start方法,start方法有两个作用1。启动线程2.调用线程中的run方法
第二种,用runable接口实现继承
package com.yk.java;
/**
* 比较创建线程的两种方式
* runable实现接口 (好)
*
* 继承Thread类 继承有局限型,单继承
*
*/
class MThread implements Runnable{
private int ticket=100;
@Override
public void run() {
while (true){
if(ticket>0){
System.out.println(Thread.currentThread().getName()+"买到了,票号是"+ticket);
ticket--;
}else {
break;
}
}
}
}
public class helloWorld {
public static void main(String[] args) {
MThread mThread=new MThread(); //对象作为参数去传递
Thread m1=new Thread(mThread);
Thread m2=new Thread(mThread);
Thread m3=new Thread(mThread);
m1.start();
m2.start();
m3.start();
}
}
实现runable接口,重写run方法
只创建一个对象,然后对象作为参数去传递到Thread对象中