`
xiaoya629
  • 浏览: 29591 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Runnable方式实现线程可以共享资源的原因

    博客分类:
  • java
阅读更多

线程的两种实现方式,通过实现Runnable接口的线程方式可以实现资源的共享,而继承Thread则不可以,原因何在?先看下面两段代码:

通过Thread实现线程:

通过Runnable实现:

解释:

因为一个线程只能启动一次,通过Thread实现线程时,线程和线程所要执行的任务是捆绑在一起的。也就使得一个任务只能启动一个线程,不同的线程执行的任务是不相同的,所以没有必要,也不能让两个线程共享彼此任务中的资源。

一个任务可以启动多个线程,通过Runnable方式实现的线程,实际是开辟一个线程,将任务传递进去,由此线程执行。可以实例化多个 Thread对象,将同一任务传递进去,也就是一个任务可以启动多个线程来执行它。这些线程执行的是同一个任务,所以他们的资源是共享。

两种不同的线程实现方式本身就决定了其是否能进行资源共享。

分享到:
评论

相关推荐

    Java有两种实现多线程的方式:通过Runnable接口、通过Thread直接实现,请掌握这两种实现方式,并编写示例程序。

    多线程环境下,多个线程共享资源时可能会出现数据不一致的问题。为了解决这个问题,Java提供了多种线程同步机制,如`synchronized`关键字、`ReentrantLock`等。通过这些机制可以确保线程安全地访问共享资源。 **...

    java中的多线程内部类实现数据共享和Runnable实现数据共享借鉴.pdf

    本篇将探讨两种在Java中实现多线程数据共享的方式:通过内部类和实现`Runnable`接口。 首先,让我们来看看如何使用`Runnable`接口实现数据共享。`Runnable`接口是Java提供的一种创建线程的方式,它允许我们将线程的...

    Java多线程-创建多线程的基本方式二:实现Runnable接口

    这是因为Java语言支持多重继承,但不支持类的多重继承,而接口可以实现多态。实现`Runnable`接口主要有以下三个步骤: - **创建Runnable接口的实现类**:定义一个类,实现`Runnable`接口,并重写`run()`方法,这里...

    Java多线程技术 线程的死锁,详细阐述了多线程的两种实现方法: 由Thread类派生子类;实现Runnable接口

    同一进程内的线程共享相同的地址空间和其他资源,这意味着它们可以访问相同的数据,从而简化了通信机制。但这也可能导致数据访问的互斥和同步问题。 **2. 多线程的优势** - **资源利用率提升**:多个线程可以共享...

    多线程资源共享集合

    `synchronized`关键字提供了基本的互斥访问保证,而`Runnable`接口和`Thread`类则是实现多线程的两种主要方式。理解并熟练运用这些概念和工具,对于编写高效、安全的多线程程序至关重要。在实践中,我们需要根据具体...

    java实现Runnable接口适合资源的共享

    其次,实现 Runnable 接口还可以实现资源的共享。 那么,什么是资源的共享呢?我们可以通过一个例子来解释。假设我们有 5 张票,分两个窗口卖。在继承 Thread 类的情况下,我们可以创建两个线程,每个线程都有自己...

    实现Runnable接口的小程序

    - **提高代码的复用性**:Runnable对象可以被多个线程共享,从而实现多线程对同一资源的并发访问。 - **更好的封装性**:Runnable接口将线程操作与业务逻辑分离,使得代码结构更加清晰,更符合面向对象的设计原则。...

    java多线程Runnable实例

    `Runnable`接口是Java实现多线程的一种方式,通过实现`Runnable`接口并创建`Thread`对象,可以轻松地创建并运行多线程。`TestRunnable.java`文件展示了这一过程,同时也提醒我们在实际开发中要注意线程同步和通信,...

    Android 多线程下载简单demo之Runnable

    // 更新下载进度,可能需要同步访问共享资源,如使用synchronized关键字或AtomicInteger } } ``` 5. **关闭线程池**: 当所有下载任务完成时,记得关闭线程池,以释放系统资源。 ```java executorService....

    创建线程类轻松实现线程管理

    - **同步**:当多个线程访问共享资源时,同步可以防止数据不一致。Java提供了`synchronized`关键字和`Lock`接口(如`ReentrantLock`)来实现线程同步。 - **线程优先级**:Java中的线程有10个优先级,从`MIN_...

    在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口(csdn)————程.pdf

    - **实现Runnable接口**:更适合需要多重继承的场景,因为Java不支持多继承,但可以实现多个接口。需要通过创建`Thread`对象并传递`Runnable`实例来启动线程。 **输出结果分析** 在两种情况下,都使用了`...

    多线程的Runnable_和thread有什么区别

    - 例如,在售票系统中,多个线程可以共享同一个`Runnable`对象,从而共享相同的票务数据。 #### 四、总结 通过对比两种实现方式,我们可以发现它们各有优势。选择哪种方式取决于具体的应用场景和个人喜好。通常来...

    java实现多线程的两种方式继承Thread类和实现Runnable接口的方法

    **实现Runnable接口**的优势在于可以避免单继承的限制,因为一个类可以实现多个接口。此外,这种方式更符合“面向接口编程”的原则,使得代码更加灵活。 在定义线程时,通常推荐使用实现`Runnable`接口的方式,除非...

    多线程两种实现方式Java

    4. **资源共享**:由于`Runnable`对象可以被多个`Thread`实例共享,这种方式更适用于资源(如数据)需要在多个线程之间共享的情况。 ### 选择实现方式 选择多线程实现方式时,需要考虑以下因素: - **单一继承**:...

    Java多线程实现Runnable方式

    Java多线程是一种编程模型,...在处理共享数据时,要确保线程安全,可以使用synchronized关键字来控制对共享资源的访问,防止数据竞争问题。理解并掌握这些概念和技巧对于开发高效、可靠的多线程Java应用程序至关重要。

    线程的几种控制方式以及线程间的几种通信方式

    3. **线程同步**:为了避免多个线程同时访问共享资源导致数据不一致,引入了线程同步机制。主要包括Java的`synchronized`关键字、Python的`Lock`对象等。 4. **线程间通信**:线程间通信允许线程之间交换信息,Java...

    java线程:两种传统的实现方式.zip

    由于多线程环境下对共享资源的访问可能引发竞态条件,我们使用`synchronized`关键字确保了对`globalSum`的更新是线程安全的。 第二种线程实现方式是实现`Runnable`接口。这种方式更为灵活,因为Java类只能单继承,...

    java用线程两种方式

    这种方式的优点在于,由于Java支持类的多重实现,因此可以在不牺牲继承其他类功能的同时,通过实现Runnable接口来创建线程。在示例中,OddNum和EvenNum类都实现了Runnable接口,通过实现run()方法来打印数字。创建...

    java线程之使用Runnable接口创建线程的方法

    在Java编程语言中,线程是程序中...总结一下,使用Runnable接口创建线程的主要优点是它允许类避免Java的单一继承限制,同时也方便了资源的共享。在多线程编程中,这种方式更为灵活,能够更好地适应复杂的程序设计需求。

    Java使用Thread和Runnable的线程实现方法比较

    使用 Runnable 接口可以实现多个线程同时执行,并且可以共享同一个资源。但是,需要创建多个 Thread 对象,并将 Runnable 对象传递给每个 Thread 对象。 选择哪种方式取决于具体的应用场景和需求。如果需要简单的多...

Global site tag (gtag.js) - Google Analytics