黑马程序员技术交流社区
标题:
多线程的两种实现方式
[打印本页]
作者:
sss18310878521
时间:
2015-5-19 23:13
标题:
多线程的两种实现方式
方式一:继承Thread
public class ThreadDemo extends Thread {
public static Object obj=new Object();
[b] //这里定义的对象必须是静态的,因为我们定义的锁只有一个,那么这个obj必须是ThreadDemo
//对象都共用的
public int num=100;
public void run(){
while(true){
synchronized(obj){
//定义一个锁,在同一个时刻,只能让同一个线程进来
if(num>0){
try {
Thread.sleep(300);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(getName()+"正在卖票"+num--);
}
}
}
}
方式二:实现Runnable接口
public class ThreadDemo implements Runnable {
Object obj=new Object();
//由于ThreadDemo继承了Runnable,我们在main方法中调用的时候只需要建立一个ThreadDemo对象
//所以这次不需要再设置成static
int num=100;
public void run() {
while(true){
synchronized(obj){
//和继承Thread一样,定义一个锁,在同一个时刻,只能让同一个线程进来
if(num>0){
try {
Thread.sleep(300);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"正在卖票"+num--);
}
}
}
注明:由于代码有点长,在这里main方法中的调用就不写了,只需要记住第一个建立三个ThreadDemo对象,第二个建立一个ThreadDemo对象,然后直接通过start()方法启动线程就可以了
}
作者:
林思奇
时间:
2015-5-20 00:35
不错,顶一个
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2