class Apple implements Runnable{
private int num=50;
public void run() {
for(int i=0;i<50;i++) {
if(num>0) {
System.out.println(Thread.currentThread().getName()+"吃了编号为"+num--+"的苹果");
}
}
}
}
//使用Runnable方式实现,三个同学吃50个苹果的比赛
public class EatApple {
public static void main(String[] args) {
Apple a=new Apple();
new Thread(a,"小A").start();
new Thread(a,"小B").start();
new Thread(a,"小C").start();
}
}
三个线程共用一个苹果对象
分析继承方式和实现方式的区别:
继承:
1)java中类是单继承的,如果继承了Thread了,该类就不能再有其他直接父类了
2)从操作上分析,继承方式更简单,获取线程名字也简单
3)从多线程共享同一个资源上分析,继承方式不能做到
实现
1)java中类可以多实现接口,此时该类还可以继承其他类,并且还可以实现其他接口(设计上,更优雅)
2)从操作上分析,实现方式稍微复杂点,获取线程名字也比较复杂,得使用Thread.currentThread()来获取当前线程的引用
3)从多线程共享同一个资源上分析,实现方式可以做到
尽量多使用实现方式