[Java]Thread类run()和start()

本文介绍了Java中创建和管理线程的方法,包括通过实现Runnable接口或继承Thread类的方式定义线程任务,以及如何启动线程、控制线程的优先级、中断线程等关键操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

类中实现的run()方法指明如何完成任务。
Java虚拟机自动调用该方法,无需特意调用它。
直接调用run()方法只是在同一个线程中执行这个方法,与普通方法类似,而没有新线程被启动,可重复多次调用。
而start()方法重新创建了一个线程,在main方法执行结束后,注意,默认创建的线程是用户线程(非守护线程),调用该Runnable对象的run()方法,不能多次启动一个线程。
一般步骤:
1.声明实现java.lang.Runnable接口的类,实现run()方法;
2.创建对象(可运行对象runnable object)
3.创建线程
4.启动线程

java.lang.Thread implements Runnable:
+Thread():创建默认线程
+Thread(task:Runnable):为特定任务创建线程
+start():void 启动线程使run()方法被JVM调用
+isAlive():boolean 测试线程目前是否在运行
+setPriority(p:int):void 将线程优先级设为p(1-10),主线程优先级Thread.NORM_PRIORITY.
+join():void 等待线程结束
+sleep(millis:long):void 使可运行对象睡眠指定毫秒数;将该线程设置为休眠以确保其他线程的执行。(注:InterruptedException必检异常)
+yield():void 使本线程临时暂停并允许其他线程执行;为其他进程临时让出CPU时间。
+interrupt():void 中断线程
stop()/suspend()/resume()方法被弃用。
为替代stop()方法,可通过给Thread变量赋值null来表明它被停止。
为避免资源竞争(contention or starvation),高优先级的线程必须定时地调用sleep或yield方法,来给低优先级或相同优先级的线程一个运行的机会。

因为Thread类要实现Runnable,所以,可以声明一个类继承Thread,并且实现run()方法。然后生成对象调用它的start()方法。
但是不推荐这种方法,因为它将任务和运行任务的机制混在一起。将任务从线程中分离出来是比较好的设计。

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值