博客
关于我
sleep()和wait()有什么区别?线程的run()和start()有什么区别?
阅读量:518 次
发布时间:2019-03-08

本文共 1085 字,大约阅读时间需要 3 分钟。

sleep()和wait()有什么区别?

Sleep()和wait()都是用来暂停线程执行的方法,但它们在功能和用途上有显著的区别。下面从几个方面对这两个方法进行比较:

  • 所在类不同:sleep()是Thread类的静态方法,而wait()是Object类的非静态方法。
  • 是否释放锁:sleep()不会释放线程所持有的锁,而wait()会释放所有相关的监літ權(monitor)。
  • 用途不同:sleep()主要用于暂停当前线程的执行,而wait()常用于线程之间的通信和等待特定的条件。
  • 用法不同:sleep()方法执行后,线程会自动苏醒到开始执行的位置,而wait()方法则会阻止线程继续执行,直到其他线程调用其它方法(如notify()或notifyAll())通知它。需要注意的是,wait()方法的超时版本(wait(long timeout))会在超时后自动苏醒。

Sleep()和wait()的主要区别在于是否拥有锁和它们的主要用途。使用sleep()并不涉及锁的机制,而wait()方法本质上是一个同步机制,会释放锁ClearColor, 所以在需要保持其他线程可以继续运行的情况下,应该使用wait()方法。

run()和start()有什么区别?

Run()和start()都是与线程相关联的方法,但它们在功能和作用上有明显的不同。下面从各个方面对这两个方法进行分析:

  • start()方法用于启动线程,run()方法负责线程的执行。启动线程需要调用start()方法,执行线程的实际功能则需要调用run()方法。
  • start()方法只能被调用一次,run()方法则可以重复调用。
  • start()方法的执行会立即创建线程并设置为就绪状态,但不会立即执行run()方法。在线程启动后,可以立即执行其他操作,而不需要等待run()方法的执行。而start()方法必须由线程外的某个线程调用,不能在当前线程内部调用start()方法,否则可能会导致死锁。
  • run()方法是相对独立的,如果直接调用run()方法,相当于是在当前线程中执行该方法代码,并不会同时多线程。start()方法则是最终启动线程的唯一方法,必须从线程外调用,并且线程启动后,必须通过run()方法来执行具体的线程功能。

在实际开发中,通常会通过调用start()方法来启动线程,而不是直接调用run()方法。因为start()方法负责线程的生命周期管理,比如线程的启动、执行以及在完成后自动终止。而run()方法只是线程的执行体,可以在必要时多次调用,但start()方法只能被调用一次。

转载地址:http://klanz.baihongyu.com/

你可能感兴趣的文章
PostGreSql学习笔记001---PostgreSQL10.4安装(Windows)_支持PostGreGis_PostJDBC
查看>>
PostGreSql学习笔记002---Navicat Premium中管理PostGreSql 错误:字段rolcatupdate 不存在
查看>>
PostgreSQL学习笔记:PostgreSQL vs MySQL
查看>>
PostgreSQL实现shape数据转geojson数据(地图工具篇.18)
查看>>
PostgreSQL导入shape数据(地图工具篇.10)
查看>>
PostGreSql工作笔记003---在Navicat中创建数据库时报错rolcatupdate不存在_具体原因看其他博文_这里使用pgAdmin4创建管理postgre
查看>>
PostGreSql工作笔记004---PostGreSql修改密码_windows和linux下修改
查看>>
Postgresql常用命令行操作_以及Navicat操作PostGis时的问题_自动截取长度_WKB structure does not match exp---PostgreSQL工作笔记005
查看>>
PostgreSQL忘记密码
查看>>
PostgreSQL数据库pg_dump命令行不输入密码的方法
查看>>
PostgreSQL新手入门
查看>>
postgresql树状结构查询示例
查看>>
PostgreSQL流复制参数max_wal_senders详解
查看>>
postgresql流复制配置
查看>>
PostgreSQL清空表并保留表结构、清空数据库还原数据库为新建时的状态的方法
查看>>
PostgreSQL的 initdb 源代码分析之九
查看>>
PostgreSQL的安装与使用指南
查看>>
postgresql编译安装及配置
查看>>
Postgresql运维常用命令_登录_权限设置_创建用户_创建数据库_创建postgis数据库_远程连接---Postgresql工作笔记009
查看>>
PostgreSQL远程连接配置
查看>>