这是Thread实现说车售票的代码
class MyThread1 extends Thread{ // 继承Thread类,作为线程的实现类
private int ticket = 5 ; // 表示一共有5张票
public void run(){ // 覆写run()方法,作为线程 的操作主体
for(int i=0;i<100;i++){
if(this.ticket>0){
System.out.println("卖票:ticket = " + ticket--) ;
}
}
}
};
public class ThreadDemo04{
public static void main(String args[]){
MyThread1 mt1 = new MyThread1() ; // 实例化对象
MyThread1 mt2 = new MyThread1() ; // 实例化对象
MyThread1 mt3 = new MyThread1() ; // 实例化对象
mt1.start() ; // 调用线程主体
mt2.start() ; // 调用线程主体
mt3.start(); // 调用线程主体
}
};
结果
卖票:ticket = 5
卖票:ticket = 5
卖票:ticket = 5
卖票:ticket = 4
卖票:ticket = 4
卖票:ticket = 4
卖票:ticket = 3
卖票:ticket = 3
卖票:ticket = 3
卖票:ticket = 2
卖票:ticket = 2
卖票:ticket = 2
卖票:ticket = 1
卖票:ticket = 1
卖票:ticket = 1
这是Runnable实现火车售票代码
class MyThread implements Runnable{ // 继承Thread类,作为线程的实现类
private int ticket = 5 ; // 表示一共有5张票
public void run(){ // 覆写run()方法,作为线程 的操作主体
for(int i=0;i<100;i++){
if(this.ticket>0){
System.out.println("卖票:ticket = " + ticket--) ;
}
}
}
};
public class RunnableDemo02{
public static void main(String args[]){
MyThread mt = new MyThread() ; // 实例化对象
new Thread(mt).start() ; // 调用线程主体
new Thread(mt).start(); // 调用线程主体
new Thread(mt).start(); // 调用线程主体
}
};
结果
卖票:ticket = 5
卖票:ticket = 4
卖票:ticket = 3
卖票:ticket = 2
卖票:ticket = 1
总结来说,使用Thread类操作多线程的时候无法达到资源共享的目的,而Runnable操作多线程的时候可以达到资源共享
这是屈版主回答另一MM同问的解答,感觉很有用,拿来分享下~~~~ |