线程的两种实现方式,通过实现Runnable接口的线程方式可以实现资源的共享,而继承Thread则不可以,原因何在?先看下面两段代码:
通过Thread实现线程:
通过Runnable实现:
解释:
因为一个线程只能启动一次,通过Thread实现线程时,线程和线程所要执行的任务是捆绑在一起的。也就使得一个任务只能启动一个线程,不同的线程执行的任务是不相同的,所以没有必要,也不能让两个线程共享彼此任务中的资源。
一个任务可以启动多个线程,通过Runnable方式实现的线程,实际是开辟一个线程,将任务传递进去,由此线程执行。可以实例化多个 Thread对象,将同一任务传递进去,也就是一个任务可以启动多个线程来执行它。这些线程执行的是同一个任务,所以他们的资源是共享。
两种不同的线程实现方式本身就决定了其是否能进行资源共享。
分享到:
相关推荐
多线程资源共享,synchronized,Runnable,Thread
线程的同步与阻塞: 引入多线程访问共享资源可能导致的问题,如竞态条件和数据不一致。介绍如何使用 synchronized 关键字来实现线程的同步和阻塞。 线程间通信: 详解线程间通信的方法,包括 wait、notify 和 ...
在多线程环境中,资源共享是非常重要的,为了避免资源竞争和数据不一致的问题,可以使用 synchronized 关键字来实现线程同步。 引起线程阻塞挂起的原因: 1. Thread.sleep() 方法:线程睡眠一段时间,不会释放锁...
一个进程可以由多个线程组成,线程间共享进程的所有资源,每个线程有自己的堆栈和局部变量。线程由CPU独立调度执行,在多CPU环境下就允许多个线程同时运行。 2. 线程的创建方法 在Java中,线程可以通过继承Thread...
解决多线程当中共享资源冲突的问题 1. 冲突问题展示: /* * 共享资源冲突的问题 */ class SingleThread implements Runnable { // 共享资源,100张票 private static int ticket = 100; @Override public void ...
假设两个窗口同时出售一次列车的车票,车票就是共享资源,两个窗口就是两个线程。 3、编写程序,实现线程间的同步控制。假设有一个生产者(Producer),一个消费者(Consumer)。生产者产生0~9的整数,将它们存储在...
java并发编程实战pdf 线程与多线程 ...线程的实现方式 在 Java 中,实现线程的方式大体上分为三种,通过继承 Thread 类、实现 Runnable 接口,实现 Callable 接口。简单的示例代码分别如下所示。
单线程程序 多线程程序 Thread类的run方法和start方法 线程的启动 线程的启动(1)——利用Thread类的子类 线程的启动(2)——利用Runnable接口 线程的暂时停止 线程的共享互斥 synchronized方法 synchronized阻挡 ...
可通过这种方法实现多个线程的资源共享。 线程的生命周期: 1.新建状态(New):用new语句创建的线程对象处于新建状态,此时它和其它的java对象一样,仅仅在堆中被分配了内存 2.绪状态(Runnable):当一个线程...
与进程不同的是同类的多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也被称为轻量级进程。 程序是含有指令和数据的...
Java线程综合打包, 众多代码,众多合集, 全面。 如果一个类继承Thread类,则不适合于多个线程共享资源,而实现了Runnable接口,就可以方便地实现资源的共享。
线程的创建有继承Thread类和实现Runnable接口两种方式,通过Runnable方式可以更加容易实现多线程之间资源共享。 通过sleep可以使线程进入休眠状态,通过join方法可以让线程处于等待,其他线程执行完毕后继续执行。 ...
* 线程则是进程的一个执行路径,一个进程中至少有一个线程,进程中的多个线程共享进程的资源。 * 操作系统在分配资源时是把资源分配给进程的,但是CPU资源比较特殊, 它是被分配到线程的,因为真正要占用CPU运行的是...
一个进程中的所有线程可以共享进程中的所有资源。 并发的目的是提供系统效率,简化程序设计。多线程是实现并发的一种有效手段。一个进程可以通过运行多个线程来并发地执行多项任务。Java语言的重要特征是在语言级...
答案是:当多个线程共享同一个资源,不会受到其他线程的干扰。 七、同步代码块 什么是同步代码块?答案是:就是将可能会发生线程安全问题的代码,给包括起来。只能让当前一个线程进行执行,被包裹的代码执行完成...
60、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 答:有两种实现方法,分别是继承Thread类与实现Runnable接口 用synchronized关键字修饰同步方法 反对使用...
事件处理器与访问共享状态的其他代码都要采取线程安全的方式实现 框架通过在框架线程中调用应用程序代码将并发性引入应用程序,因此对线程安全的需求在整个应用程序中都需要考虑 基础知识 线程安全性 ...
1、什么是线程安全? 当多个线程同时共享同一个全局变量或静态变量,做写的操作时,可能会发生数据... // 这是货票总票数,多个线程会同时共享资源 private int trainCount = 100; @Override public void run() {