平淡的生活,我依旧能梳理出生活的乐章!
Java 多线程的Thread类和Runnable接口(转载)
上一篇 /
下一篇 2010-11-18 12:56:14
/ 个人分类:Java编程
Java 多线程的Thread类和Runnable接口 |
作者:天涯 来源:中国自学编程网发布日期:1213094467 |
|
Runnable和Thread实现的有何区别?A.run()和A.start()区别??
通过调用Thread类的start()方法来启动一个线程,
这时此线程是处于就绪状态,
并没有运行。
然后通过此Thread类调用方法run()来完成其运行操作的,
这里方法run()称为线程体,
它包含了要执行的这个线程的内容,
Run方法运行结束,
此线程终止,
而CPU再运行其它线程,
而如果直接用Run方法,
这只是调用一个方法而已,
程序中依然只有主线程--这一个线程,
其程序执行路径还是只有一条,
这样就没有达到写线程的目的Runnable和Thread实现的有何区别?A.run()和A.start()区别??通过调用Thread类的start()方法来启动一个线程,
这时此线程是处于就绪状态,
并没有运行。
然后通过此Thread类调用方法run()来完成其运行操作的,
这里方法run()称为线程体,
它包含了要执行的这个线程的内容,
Run方法运行结束,
此线程终止,
而CPU再运行其它线程,
而如果直接用Run方法,
这只是调用一个方法而已,
程序中依然只有主线程--这一个线程,
其程序执行路径还是只有一条,
这样就没有达到写线程的目的
买票时多个线程对同一资源进行共享
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(Thread.currentThread().getName()+"卖票:ticket = " + ticket--) ;
}
}
}
};
public class ThreadDemo04{
public static void main(String args[]){
MyThread mt1 = new MyThread() ; // 实例化对象
new Thread(mt1).start(); //创建一个资源,对其开启3个线程;
new Thread(mt1).start();
new Thread(mt1).start();
}
};
运行结果:注每次运行均不同:
Thread-0卖票:ticket = 5
Thread-1卖票:ticket = 4
Thread-0卖票:ticket = 3
Thread-1卖票:ticket = 2
Thread-0卖票:ticket = 1
Thread-2卖票:ticket = 0
收藏
举报
TAG: