原文:http://www.mamicode.com/info-detail-517008.html
一,继承Thread 类和实现Runnable接口两种方法
package hello;
public class luxun {
class person{
private String name;
public person(String name){
this.name=name;
}
}
class smoke implements Runnable{
private person per;
public smoke(person per){
this.per=per;
}
public void run() {
for(int i=1;i<=10;i++){
System.out.println(per.name+"吸一口实现Runnable烟.....");
try {
Thread.sleep((int) Math.random() * 10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class smoke2 extends Thread{
private person per;
public smoke2(person per){
this.per=per;
}
public void run() {
for(int i=1;i<=10;i++){
System.out.println(per.name+"吸一口继承Thread烟.....");
try {
Thread.sleep((int) Math.random() * 10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class write implements Runnable{
private person per;
public write(person per){
this.per=per;
}
@Override
public void run() {
for(int i=1;i<=10;i++){
System.out.println(per.name+"写一段实现Runnable话.......");
try {
Thread.sleep((int) Math.random() * 10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class write2 extends Thread{
private person per;
public write2(person per){
this.per=per;
}
@Override
public void run() {
for(int i=1;i<=10;i++){
System.out.println(per.name+"写一段继承Thread话.......");
try {
Thread.sleep((int) Math.random() * 10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
luxun test=new luxun();
personter=test.new person("鲁迅");
new Thread(test.new smoke(per)).start();
new Thread(test.new write(per)).start();
test.new smoke2(per).start();
test.new write2(per).start();
}
}
鲁迅吸一口实现Runnable烟…..
鲁迅吸一口实现Runnable烟…..
鲁迅吸一口实现Runnable烟…..
鲁迅写一段实现Runnable话…….
鲁迅写一段实现Runnable话…….
鲁迅吸一口实现Runnable烟…..
鲁迅写一段实现Runnable话…….
鲁迅吸一口实现Runnable烟…..
鲁迅吸一口实现Runnable烟…..
鲁迅写一段实现Runnable话…….
鲁迅吸一口实现Runnable烟…..
鲁迅写一段实现Runnable话…….
鲁迅吸一口实现Runnable烟…..
鲁迅吸一口实现Runnable烟…..
鲁迅写一段实现Runnable话…….
鲁迅吸一口实现Runnable烟…..
鲁迅写一段实现Runnable话…….
鲁迅写一段实现Runnable话…….
鲁迅写一段实现Runnable话…….
鲁迅写一段实现Runnable话…….
鲁迅吸一口继承Thread烟…..
鲁迅吸一口继承Thread烟…..
鲁迅吸一口继承Thread烟…..
鲁迅吸一口继承Thread烟…..
鲁迅吸一口继承Thread烟…..
鲁迅吸一口继承Thread烟…..
鲁迅吸一口继承Thread烟…..
鲁迅吸一口继承Thread烟…..
鲁迅吸一口继承Thread烟…..
鲁迅吸一口继承Thread烟…..
鲁迅写一段继承Thread话…….
鲁迅写一段继承Thread话…….
鲁迅写一段继承Thread话…….
鲁迅写一段继承Thread话…….
鲁迅写一段继承Thread话…….
鲁迅写一段继承Thread话…….
鲁迅写一段继承Thread话…….
鲁迅写一段继承Thread话…….
鲁迅写一段继承Thread话…….
鲁迅写一段继承Thread话…….
二, Thread 和 Runnable 的区别
实现Runnable接口比继承Thread类所具有的优势:
1):适合多个相同的程序代码的线程去处理同一个资源
2):可以避免java中的单继承的限制
3):增加程序的健壮性,代码可以被多个线程共享,代码和数据独立