多线程被认为是计算机编程中更复杂的主题之一 , 特别是在 Java 中 。 在应用程序中正确使用多线程需要高水平的技能、知识和经验 。
以下是Java中多线程接口和类的一些核心概念和解释:
线程:在Java中 , 线程类是与多线程相关的最重要的类 。 线程可以通过扩展这个类来实现 。 本文稍后将演示它的用法 。 在生产或开发环境中 , 开发人员可能会发现修复与多线程相关的问题非常困难 。 了解锁可能有助于解决最令人困惑和最常见的错误 , 即使是经验丰富的 Java 程序员也难以理解 。Runnable:Runnables 是另一种创建线程的方法 。 你可以通过实现 Runnable 接口或扩展线程类在 Java 中创建线程 。 在这种情况下 , 开发人员必须从这个接口重写 run() 方法来实现逻辑 。 (注意:Thread 类已经实现了 Runnable) 。 为了更好地理解多线程 , 请尝试在下面显示的每个方法中记住共享对象的锁定状态(如果适用) 。
start() Lock Status:可以获取锁 。 调度线程运行时调用此方法 。 线程一旦被调度并且 CPU 周期可用 , 就会运行 。
run() Lock Status:可以获取锁;它被 Thread 运行时隐式调用 , 以开始执行线程 。
yield() Lock Status:锁被持有;这种特殊的方法要么产生或将控制权转移到具有相同优先级的不同线程 。 不能保证它将控制权转移到哪个线程——或者它是否会转移控制权——并不能保证 。 下面的示例代码显示了如何通过扩展线程类在 Java 中创建线程 。
sleep() Lock Status:锁被持有;使用此方法将导致当前正在执行的线程在给定的时间内暂停其执行 。 可以以毫秒为单位指定执行暂停的时间量 。 将抛出一个中断的异常 , 程序员需要解决这个问题 。
join() Lock Status:锁被持有;使用它会导致执行模式 , 导致所有线程在当前线程的末尾加入 。 在这种情况下 , 当前线程在切换到另一个线程之前会继续完成 。 这也会引发一个中断的异常 , 开发人员需要解决这个异常 。
suspend() Lock Status:锁被持有;这已被弃用 。
resume() , 锁状态:锁被持有;这已被弃用;这两个线程都已被弃用 , 因为它们会导致死锁和冻结进程 。
stop() Lock Status:锁被释放; 这已被弃用; 这种特殊的线程方法已被弃用 , 因为它由于损坏的对象而创建了不规则的状态 。 不建议使用 。
Java 对象类和多线程
Java 的 Object 类固有地包含用于控制访问该对象的方法 , 尤其是在共享或多线程应用程序中 。
wait() , Lock Status:当前对象锁释放 , 其他锁被持有; 使用 wait() 方法将导致当前线程停止执行并进入等待状态 。 这也将释放它放置在当前对象上的锁 , 同时保留其他对象上的所有其他锁 。
【Java|Java:Java多线程接口和类】notify() , 锁状态:锁被随机等待线程获取; notify() 方法将通知正在等待获取当前共享对象上的锁的线程 。
notifyAll() , 锁状态:锁被任意线程获取 , 等待获取当前共享对象的锁 。 将使用此方法通知所有等待获取线程锁的线程 。
多线程和并发程序中常遇到的有Memory-interface、竞争条件、死锁、活锁和饥饿 。 问题是没有止境的 , 如果你弄错了 , 将很难发现和调试 。 这是大多数基于面试的 , 而不是基于实际应用的Java线程问题 。 想学习java多线程的同学建议通过参加java培训来提升自己 , 在专业老师的指导下 , 可以获得很大进步 。
- 美团|跑外卖被队长勒索3000多元的保护费,揭露美团众包乐跑内幕
- 病毒|为什么感觉现在电脑病毒少了?黑客:我还想多活几年
- 阿里巴巴|阿里云换帅,多名高P离职,空降前华为EBG总裁!
- ColorOS|OPPO开启ColorOS 12升级内测招募 包含众多老机型
- 充电器|男性被种草的点,究竟有多奇特?你知道那个叫充电头网的网站吗
- 网信办|拼多多“翻车”后,美团翻,我们担心的事正变成现实
- bilibili|氪金、引流、发电、造星、玩IP,内容平台抢人大战有多卷?
- 黑客|美国隐藏多年的网络攻击被曝光,中国是如何攻克黑客的?警醒世界
- 美团|拼多多“翻车”后,美团翻,我们担心的事正变成现实
- OPPO Find|上手两获iF大奖的Find N:手感、体验俱佳,多种玩法颠覆认知