线程的实现
要实现多线程有两种方式,一种是继承thread类(要重写run()方法),一种是实现Runnable接口。
1、实现方式一 (用的较少)
package
public
private
public
this.name
}
public
for
System.out.println("Thread运行:"
}
}
}
package
public
public
MyThread
MyThread
//
thread1.run();
//
thread2.run();
thread1.start();
thread2.start();
}
}
2、实现方式二
public
Void
}
package
public
private
public
this.name
}
public
for
System.out.println("Thread运行:"
}
}
}
package
public
public
MyRunnable
MyRunnable
//
new
new
}
}
两种实现方法的区别,在开发中一般都是用方法二。好处有:避免单继承的局限性。适用于多线程的共享。
如下假设一个购票系统:
用thread方式实现:
package
public
int
public
for
if
System.out.println("买了"
ticketNum--;
}
}
}
}
package
public
public
//创建5个不同的线程
BuyTiacet
BuyTiacet
BuyTiacet
BuyTiacet
BuyTiacet
BuyTiacet
//开始线程
buyTicketA.start();
// buyTicketA.start();
// buyTicketA.start();
// buyTicketA.start();
// buyTicketA.start();
// buyTicketA.start();
buyTicketB.start();
buyTicketC.start();
buyTicketD.start();
buyTicketE.start();
buyTicketF.start();
}
}
结果是每个线程都买了相同多的票数,并不是资源的共享。即每个线程各不相关,各自有各自的线程。并且不能有相同的两个线程在执行,否则会报错!!
用Runnable实现
package
public
int
public
for
if
System.out.println("买了"
ticketNum--;
}
}
}
}
package
public
public
//Runnable方式
private
RunnableTicket
new
new
new
new
new
}
}
实现了资源的共享!!
但是在不同版本的jdk下得到的结果不同,可以查看帮助文档的run()方法!!
http://online.chinaitpower.com/
Jdk1.5
public
if
throw
started
group.add(this);
start0();
}
private
public
if
target.run();
}
}
Jdk1.4
Public
Public
if(target
target.run();
}
}
版权声明:本文为博主原创文章,未经博主允许不得转载。