楼主:
首先,线程有两种方式实现,
一个是继承Thread类,再去重写run()方法,
第二个是实现Runnable接口,实现Run()方法,
这里我补充一点的是:我们一般都是用第二种,因为要是第二组的话,能实现资源共享,第一种,就是多个线程拥有独立的资源,这一点非常重要,也是为什么现在推广使用第二种的原因!
第一种:
class Demo extends Thread{
public void run(){
for(int i=0;i<60;i++)
System.out.println("demo run");
}
}
public class ThreadTest1 {
public static void main(String[] args) {
//创建好一个线程,就多了一个执行路径
Demo d=new Demo();
d.run();
for(int i=0;i<100;i++)
System.out.println("hello word");
}
}
第二种:
class Ticket implements Runnable{
private static int tick=1000;
Object obj=new Object();
boolean flag=true;
public void run(){
if(flag){
while(true){
synchronized (obj) {
if(tick>0){
System.out.println(Thread.currentThread().getName()+":"+tick--);
}
}
}
}else
while(true)
show();
}
public synchronized void show(){
if(tick>0)
System.out.println(Thread.currentThread().getName()+":"+tick--);
}
}
public class TicketTest {
/**
* 简单的卖票程序
* 多线程卖票
*/
public static void main(String[] args) {
//每创建一个线程,都会创建一个线程独立空间
//我现在只建立一个对象,
Ticket t=new Ticket();
Thread t1=new Thread(t,"0");//创建一个线程
Thread t2=new Thread(t,"1");//创建一个线程
//怎么让这个对象和线程有关联呢?
t1.start();
try{
Thread.sleep(10);
}catch(Exception e){}
t2.start();
}
} |