JAVA多线程深度解析:run(), start(), synchronized等方法
需积分: 0 39 浏览量
更新于2024-11-12
收藏 115KB PDF 举报
"JAVA专题技术综述之线程"
在Java编程中,线程是程序执行的独立路径,允许多个任务同时执行。本资源聚焦于Java线程的关键概念和技术,包括run()、start()方法,synchronized关键字以及相关的重要方法如wait()、notify()、notifyAll()、sleep()、yield()和join()。
一、run()和start()
`run()` 方法是定义线程执行体的地方,程序员通常会将需要并发执行的代码放入run()方法中。在Java中,创建一个Thread子类并重写run()方法是创建线程的一种方式。`start()` 方法则是启动线程,它会调用run()方法,但区别在于start()会使得线程进入就绪状态,然后由JVM调度执行,而直接调用run()则只会作为普通方法执行,不会产生新的线程。
关于run()方法的规范:
- 访问控制符通常是public,因为线程可能需要通过外部调用run()来执行。
- run()方法无返回值,即返回类型是void。
- 不需要接收参数,因为线程的主要目的是执行特定的代码逻辑,参数传递通常在构造函数或外部变量中完成。
二、关键字synchronized
`synchronized` 关键字在多线程编程中用于控制并发访问共享资源,确保同一时间只有一个线程可以执行特定的代码块。它可以帮助我们避免数据竞争,实现线程安全。在示例2中,synchronized修饰的run()方法使得在同一时刻,只有一个线程能执行该方法,从而保证了数据的完整性。
三、其他线程控制方法
- `wait()`: 当一个线程调用对象的wait()方法时,它会释放对象的锁,并进入等待状态,直到其他线程调用同一对象的notify()或notifyAll()唤醒它。
- `notify()` 和 `notifyAll()`: 这两个方法用来唤醒等待在特定对象上的线程。notify()只会唤醒一个,而notifyAll()会唤醒所有等待的线程。
- `sleep()`: 使当前线程暂停执行指定的毫秒数,释放CPU执行权,但不会释放锁。
- `yield()`: 让当前线程暂停,让出CPU执行权,但不保证一定会切换到另一个线程,它主要用来让相同优先级的线程之间有更公平的执行机会。
- `join()`: 当在一个线程中调用另一个线程的join()方法时,调用线程会等待被join()的线程执行完毕后再继续执行。
理解并熟练掌握这些线程控制方法是编写高效、可靠的多线程Java程序的基础。在实际开发中,合理地使用这些工具可以有效地提高程序的并发性能,同时保证线程安全。
2022-09-24 上传
2008-08-20 上传
105 浏览量
点击了解资源详情
点击了解资源详情
点击了解资源详情
151 浏览量
点击了解资源详情
ruoan2004
- 粉丝: 0
- 资源: 1
最新资源
- docs-to-pdf-converter
- RedisDesktopManager安装包
- springcloud-config
- :parrot:会话标准元语言-Rust开发
- 行业文档-设计装置-防震纸质包装盒.zip
- testrepo
- company_employee_mysql
- Intel ME Firmware Repository
- 行业文档-设计装置-一种平台拖车.zip
- HTML-CSS:基础HTML和CSS知识
- 基于远程监督与bootstrapping方法的人物关系抽取,基于知识图谱的知识问答
- 全球地址表,包括所有国家,地区,城市。mysql版,.sql文件
- 一个易于安装,高性能,零维护的代理,可运行加密的DNS服务器。-Rust开发
- 塔勒3_01_02_2021
- Network_Programing_2021
- 基于apache commons.fileupload的文件上传组件,改进了上传速度