当前位置: 首页 > news >正文

保定seo企业网站沉默是金歌词谐音对照

保定seo企业网站,沉默是金歌词谐音对照,闵行做网站建设,深圳网站建设设计制作目录 1. Thread 类和 Runnable 接口的设计目的 1.1 为什么有 Thread 类和 Runnable 接口#xff1f; 2. Thread 类实现的详细分析 2.1 Thread 类的构造方法 2.2 start() 方法的工作原理 2.3 run() 方法 2.4 join() 方法 3. Runnable 接口的实现和作用 3.1 Runnable 接…目录 1. Thread 类和 Runnable 接口的设计目的 1.1 为什么有 Thread 类和 Runnable 接口 2. Thread 类实现的详细分析 2.1 Thread 类的构造方法 2.2 start() 方法的工作原理 2.3 run() 方法 2.4 join() 方法 3. Runnable 接口的实现和作用 3.1 Runnable 接口的设计目标 3.2 Runnable 的使用方式 3.3 Runnable 和 Thread 的解耦 4. Thread 和 Runnable 的优缺点比较 5. 常见的线程池与 Runnable 配合使用 5.1 使用 ExecutorService 线程池 6. 总结 1. Thread 类和 Runnable 接口的设计目的 1.1 为什么有 Thread 类和 Runnable 接口 Thread 类和 Runnable 接口是 Java 多线程编程的核心。它们设计的目的分别是 Thread 类直接管理线程的生命周期和线程的运行。每个 Thread 类对象代表一个操作系统中的线程你可以通过 start() 方法启动线程通过 run() 方法执行任务。Runnable 接口定义线程要执行的任务。它使得任务与线程解耦从而让同一个任务可以在多个线程中执行提高了任务的复用性和灵活性。 2. Thread 类实现的详细分析 Thread 类是 Java 中用于创建和控制线程的主要类。它实现了 Runnable 接口提供了线程管理和调度的基本方法。 2.1 Thread 类的构造方法 Thread 类提供了多种构造方法但我们常用的有两种 public Thread(Runnable target) { ... } Runnable target传入一个 Runnable 对象这个对象表示线程执行的任务。Thread 会在 run() 方法中调用 Runnable 的 run() 方法。 public Thread(Runnable target, String name) { ... } String name给线程命名便于调试和监控。线程的名称在大多数情况下是可选的但在多线程调试时非常有用。 2.2 start() 方法的工作原理 start() 方法启动线程实际的底层实现是通过操作系统的线程调度机制来启动一个新线程。我们来详细看看 Thread 类的 start() 方法 public synchronized void start() {if (threadStatus ! NEW) throw new IllegalThreadStateException();group.add(this);start0(); // native方法调用底层操作系统的接口启动线程 }synchronized使用同步来保证线程的安全确保一个线程只能调用一次 start() 方法。start0()这是一个 native 方法意味着它是用本地代码通常是操作系统层面的代码实现的。这个方法的作用是通知操作系统为当前线程分配执行资源并启动它。 2.3 run() 方法 线程的任务是通过 run() 方法来定义的。Thread 类中有一个默认的 run() 方法 public void run() {if (target ! null) {target.run(); // 如果传入了Runnable任务则执行它} }target 是在构造线程时传入的 Runnable 对象。run() 方法会调用 Runnable.run() 方法来执行任务。如果没有传入 Runnable 对象那么 run() 方法什么也不做。 2.4 join() 方法 join() 是 Thread 类的一个非常有用的方法用于线程间的同步。通过 join()我们可以让当前线程等待某个线程执行完毕再继续执行。 public final void join(long millis) throws InterruptedException {if (millis 0) {join();} else {long startTime System.currentTimeMillis();long remainingTime millis;synchronized (this) {while (isAlive()) {wait(remainingTime);remainingTime millis - (System.currentTimeMillis() - startTime);if (remainingTime 0) break;}}} }join() 方法内部通过 wait() 和 notify() 实现线程的等待机制。主线程可以通过调用其他线程的 join() 来阻塞等待该线程的执行结束。 3. Runnable 接口的实现和作用 3.1 Runnable 接口的设计目标 Runnable 是一个功能性接口它没有线程管理的功能只定义了线程执行的任务。它的作用是将任务与线程的管理分开。 public interface Runnable {void run(); // 线程要执行的任务 }3.2 Runnable 的使用方式 Runnable 是 Java 中实现多线程任务的常见方式之一。当我们有多个线程需要执行同一个任务时使用 Runnable 可以更方便地传递任务。 public class MyRunnable implements Runnable {Overridepublic void run() {System.out.println(This is a task being executed by a thread.);} }public class Main {public static void main(String[] args) {MyRunnable task new MyRunnable();Thread thread new Thread(task); // 将任务传给线程thread.start(); // 启动线程} }3.3 Runnable 和 Thread 的解耦 Runnable 的重要优势在于它解耦了任务和线程的关系。任务Runnable可以独立于线程Thread存在多个线程可以共享同一个任务这样可以复用任务代码提高代码的灵活性和可维护性。 4. Thread 和 Runnable 的优缺点比较 特性Thread 类Runnable 接口继承关系继承自 Thread 类不能继承其他类只实现 Runnable 接口可以继承其他类灵活性不灵活只能继承 Thread 类不能继承其他类灵活可以继承其他类支持多任务复用任务执行方式必须重写 run() 方法来执行任务只需实现 run() 方法来定义任务适用场景当线程和任务紧密耦合且无需继承其他类时当任务和线程解耦时适合用 Runnable 接口资源共享不支持共享任务允许多个线程共享同一个 Runnable 对象 5. 常见的线程池与 Runnable 配合使用 在实际开发中我们通常不会直接使用 Thread 类来管理线程因为线程的创建和销毁会带来较高的性能开销。更推荐使用 线程池 来管理线程Runnable 接口可以配合线程池执行任务。 ExecutorService 是 Java 提供的一个高效的线程池接口它允许我们以一种更简单、优雅的方式来管理线程。 5.1 使用 ExecutorService 线程池 import java.util.concurrent.*;public class ExecutorServiceExample {public static void main(String[] args) {ExecutorService executorService Executors.newFixedThreadPool(3); // 创建一个固定大小的线程池Runnable task1 new Runnable() {Overridepublic void run() {System.out.println(Task 1 is executing.);}};Runnable task2 new Runnable() {Overridepublic void run() {System.out.println(Task 2 is executing.);}};executorService.submit(task1); // 提交任务到线程池executorService.submit(task2); // 提交任务到线程池executorService.shutdown(); // 关闭线程池} }在上面的代码中使用 ExecutorService 来管理线程池。我们提交了多个 Runnable 任务线程池会自动从线程池中获取空闲线程来执行这些任务。 6. 总结 Thread 类是最基础的线程实现方式适用于线程和任务紧密耦合的情况。通过继承 Thread 类可以重写 run() 方法来执行任务。Runnable 接口是更灵活的方式适用于任务和线程分离的情况。多个线程可以共享同一个 Runnable 任务从而提高任务复用性。线程池ExecutorService在实际开发中推荐使用线程池来管理线程避免手动创建、销毁线程带来的性能开销。
http://www.yayakq.cn/news/5726/

相关文章:

  • 网站常见问题怎么开发软件app软件
  • 网站后台无法修改信息wordpress图片自动分页插件
  • 八年级学生做的简易网站哪里有做网站系统的
  • 图片点击就能跳转网站怎么做的网站建设目标的技术可行性
  • 青海省公路建设市场信用信息服务网站wordpress 每页文章数
  • 影视网站建设平台有人情味的网站
  • 上海婚恋网站排名潍坊网络营销
  • 机械网站建设注意什么php网站绑定域名
  • 专业网站建设费用包括哪些aliyun怎么建网站
  • 现在最流行的网站开发工具设计师关注的十大网站
  • 建网站的意义互联网创业项目ppt模板
  • 网站gif小图标直播网站可以做毕设吗
  • 如何判断网站是竞价站有哪些可以做图的网站啊
  • 代理网站备案表wordpress去广告
  • 免费注册的网站能备案吗江西省建设职业培训学校网站
  • 网站外连小程序模板指令
  • 网站建设 58同城视频seo优化教程
  • 谷歌网站地图生成器公司网站域名注册流程
  • 手表网站欧米茄价格做别人一样的网站
  • 网上建设银行网站百度快照官网登录
  • 个人网站建设案例课堂制作网页网站用的是什么
  • 品牌运营公司越秀seo搜索引擎优化
  • 网站改版 如何改版wordpress 百度空间
  • 如何把自己电脑做网站服务器吗设计需要了解的网站
  • ps做网站一般用多大字体百度搜索什么关键词能搜到网站
  • 友情链接是在网站后台做吗wordpress菜单 自定义
  • 网页设计免费网站推荐wordpress后台修改文件
  • 北京网站建设公司代理网站降权恢复
  • 深圳网站建设认准乐云践新西安的最新消息
  • 龙岗网站建设公司哪家口碑好网站做友链有什么用