Java多线程_Thread类

开发工具与关键技术:Java、myEclipse
作者:吴晓佩
撰写时间:2019年08月05日

在Java中创建多线程有如下3种方式:
1、继承Thread类,重写run方法
子类继承Thread具备了多线程的能力
启动线程:子类对象.Start()
不建议使用:避免oop单继承局限

2、实现Runable接口重写run方法
实现接口Runable具有多线程能力
启动线程:传入目标对象+Thread对象.start()
推荐使用:oop多实现,灵活方便,方便同一份对象的代理。

3、在juc并发下实现callable接口,重写call方法。

如下来了解一下Thread类,Tread类是java.lang包中的一个类,它实现了Runable接口,从这个类中实例化的对象代表线程,启动一个新线程需要建立Tread实例。Java虚拟机允许应用程序同时执行多个执行线程。每个线程都有优先权。具有较高优先级的线程优先较低的线程执行。每个线程可能会被标记为守护线程。当在一些线程中运行的代码创建一个新的Thread对象时,新线程的优先最初设置为等于创建线程的优先级,并且当且仅当创建线程是守护进程时才是守护线程。

常用的构造方法:
public Thread():创建一个新的线程对象
public Thread(String threadName):创建一个名称为threadName的线程对象。
Public Thread(Runnable target):创建一个新的Thread对象。

常用的方法:
start():导致此线程开始执行。Java虚拟机调用此线程的run方法。
run():如果这个线程是使用单独的Runnable运行对象构造的,那么这个Runnable对象的run方法被调用。

完成线程真正功能的代码在类的run()方法中,当一个类继承Thread类后,就可以在该类中覆盖run()方法,将实现该线程功能的代码写入run()方法中,然后同时调用Thread类中的start()方法执行线程,即调用run()方法。
Thread对象需要线程在启动时执行,该线程执行代码被写在run()方法中。

如下是继承Thread类实现多线程的简单代码示例:
在这里插入图片描述
由main()开始运行代码,然后在内存中创建一个starThread对象,调用start方法开启线程。然后交由cup去调用,代码继续往下执行,而run方法也会由cup来调用,然后两段代码同时执行,注意这里的同时执行是指都在运行,但是每个时间点只能运行一段代码。
运行结果如下:一个时间点执行一个代码。
在这里插入图片描述
注意:
1、在Java中继承Thread类的实现多线程方式尽量少用一些,因为Java中存在单继承的局限性,例如当一个类继承了Thread类,但又必须继承其他的类时,就得写大量的重构代码来解决这些问题。
2、如果start()方法调用已经一个启动的线程,系统将抛出IllegalThreadStateException异常。
3、调用start方法时,不保证立即运行线程体,而是交由cpu来调用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值