java thread_java thread写法

代表线程的是类Thread和接口runnable,因此可以通过两种方式来实现多线程。

1) 继承Thread类

例子:

PrintThread类继承了Thread,然后实现run()方法。

public class PrintThread extendsThread{

String name;publicPrintThread(String name)

{this.name =name;

}public voidprint()

{

System.out.print(name+ " start to print ");try{

Thread.sleep(3000);

}catch(InterruptedException e) {//TODO Auto-generated catch block

e.printStackTrace();

}

System.out.println(name+ " finished print ");

}public voidrun()

{

print();

}

}

2)实现Runnable接口

public class PrintThread implementsRunnable{

String name;publicPrintThread(String name)

{this.name =name;

}public voidprint()

{

System.out.print(name+ " start to print ");try{

Thread.sleep(3000);

}catch(InterruptedException e) {//TODO Auto-generated catch block

e.printStackTrace();

}

System.out.println(name+ " finished print ");

}public voidrun()

{

print();

}

}

线程写好了,那怎么使用呢,两种用法的使用者有什么不同呢

对于extends写法,可有3种写法,其实是第一个和第二个其实是1种,第2个是用多了多态。

public class TestPrint {

public static void main(String[] args) {

//Thread t1 = new Thread(new PrintThread("t1"));

PrintThread t1 = new PrintThread("t1");

//

Thread t2 = new PrintThread("t2");

//Thread t1 = new Thread(new PrintThread("t1"));

//Thread t2 = new Thread(new PrintThread("t2"));

Thread t3 = new Thread(new PrintThread("t3"));

t1.start();

t2.start();

t3.start();

}

}

把原来PrintThread改为implements Runnable后,上面的测试类TestPrint不能编译通过,这是因为

1) t1对象能成功创建,但是不能成功调用start方法,因为runnable接口中只有run方法,没有start()方法。

2)t2对象不能成功创建,因为Thread类实现了runnable接口,PrintThread类也实现了Runnable接口,但是这2个类没有父子关系

3)t3能创建成功,也能调用start()方法启动线程。

所以实现Runnable接口的对象只能通过Thread(Runnable targe)构造函数来创建线程。

于是测试类变成:

public classTestPrint {public static voidmain(String[] args) {//TODO Auto-generated method stub

Thread t1= new Thread(new PrintThread("t1"));

Thread t2= new Thread(new PrintThread("t2"));

Thread t3= new Thread(new PrintThread("t3"));

t1.start();

t2.start();

t3.start();

}

}

总结:

1)extends用法调用时有2种写法: new thread(new PrintThread()), 或者直接 new PrintThread().

2) Runnable用法调用时只能 New Thread(new PrintThread()).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值