`
youyu4
  • 浏览: 440074 次
社区版块
存档分类
最新评论

Java多线程之Runable资源共享

 
阅读更多

Java多线程之Runable资源共享

 

之前谈到Runable能够资源共享,而Thread不能,到底什么意思呢?先看看代码

 

继承Thread

 

//使用Thread实现线程不能实现资源共享  
class MyThread extends Thread  
{     
    private int ticket=5;  
    private String name;  
    public MyThread(String name ){  
        this.name=name;  
    }  
    public void run(){  
        for(int i=0;i<10;i++){  
            if(ticket>5){  
                System.out.println("线程"+name+"卖票"+i);  
            }  
        }  
      
    }  
}  
  
public class ThreadDemo02  
{  
    public static void main(String args[]){  
        MyThread A = new MyThread("A");    
        MyThread B = new MyThread("B");  
        A.start();  
        B.start();  
    }  
}

 

 

实现Runable接口

 

//使用Runnable实现线程可以实现资源共享  
class MyThread implements Runnable  
{  
    private int ticket=5;  
    private String name;  
    public MyThread(String name){  
        this.name=name;  
    }  
    public void run(){  
        for(int i=1;i<=10;i++){  
            if(ticket>0){  
                System.out.println("线程"+name+"卖票"+(ticket--));  
                }  
        }  
    }  
}  
public class RunnableDemo02  
{  
    public static void main(String args[]){  
        MyThread A = new MyThread("A");  //实例化线程要执行的任务  
        Thread Ta = new Thread(A);    //实例两个线程对象,实际传递的是一个任务  
        Thread Tb = new Thread(A);    //因为两个线程执行的是一个任务,所以资源是共享的  
        Ta.start();  
        Tb.start();  
    }  
}

 

 

解释:

 

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

 

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

 

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

 

 

简单来讲:

 

资源共享就是的让几个线程完成一个工作

 

分享到:
评论

相关推荐

    java 多线程设计模式 进程详解

    《JAVA多线程设计模式》PDF 下载 《Java线程 高清晰中文第二版》中文第二版(PDF) 前言 第一章 线程简介 Java术语 线程概述 为什么要使用线程? 总结 第二章 Java线程API 通过Thread类创建线程 使用Runable接口...

    Java多线程Runable售票系统实现过程解析

    Java多线程Runable售票系统实现过程解析 本文主要介绍了Java多线程Runable售票系统实现过程解析,通过示例代码进行了非常详细的介绍,对大家的学习或者工作具有一定的参考学习价值。 Java多线程 Java多线程是Java...

    java-龟兔赛跑Runable

    在Java编程语言中,"java-龟兔赛跑Runable"是一个典型的多线程示例,它基于经典的寓言故事“龟兔赛跑”。在这个场景中,龟和兔被实现为两个独立的线程,分别代表`Runnable`接口的实例。下面我们将详细探讨这个主题,...

    java_Thread.rar_java thread runable_thread runable

    总结来说,Java线程是通过`Thread`类或`Runnable`接口实现的,理解并熟练掌握线程的创建、管理和同步机制是Java多线程编程的关键。合理使用线程可以帮助提高程序性能,但也需要注意线程安全和资源管理,避免出现竞态...

    详解多线程及Runable 和Thread的区别

    多线程及Runable 和Thread的区别 多线程是一种常用的编程技术,用于提高程序的执行效率和响应速度。在 Java 中,多线程可以通过继承 Thread 类或实现 Runnable 接口来实现。虽然这两种方法都可以实现多线程,但它们...

    Runable实现多线程并且用两个线程打印0-10

    实现Runable接口的方式: 1创建实现Runable接口的实现类:必须实现run 方法 2创建1中对应的Runable接口的实现对象 3创建Thread对象 利用Thread Runable target 4调用Thread类的start 方法启动线程

    实现Runnable接口创建多线程.docx

    在Java编程语言中,创建线程有两种主要方式:继承`Thread`类和实现`Runnable`接口。由于Java的单继承特性,当一个类需要继承其他类时,就不能再直接...不过,理解基本的`Runnable`接口实现是掌握Java多线程编程的基础。

    多线程例子

    在java中要想实现多线程,有两种手段,一种是继续Thread类,另外一种是实现Runable接口.(其实准确来讲,应该有三种,还有一种是实现Callable接口,并与Future、线程池结合使用,此文这里不讲这个。

    简单实现多线程同步示例(模拟购票系统)

    线程同步是多线程编程中的关键概念,它防止了多个线程同时访问共享资源,避免了数据的不一致性,例如竞态条件和死锁。 在这个模拟购票系统中,我们可以设想有一个全局的票数变量。当多个用户同时尝试购买时,如果不...

    Java多线程

    在java中要想实现多线程,有两种手段,一种是继续Thread类,另外一种是实现Runable接口。

    2020面试题总结多线程篇.pdf

    多线程实现方式主要有四种:继承 Thread 类、实现 Runable 接口、实现 Callable 接口、通过 FutureTask 包装器。这四种方式可以满足不同的需求,例如继承 Thread 类可以实现线程的生命周期管理,而实现 Runable 接口...

    Java创建多线程异步执行实现代码解析

    Java多线程异步执行实现代码解析 Java语言中提供了多种方式来实现多线程异步执行,包括实现Runnable接口和继承Thread类两种方式。下面将对这两种方式进行详细的介绍和解析。 实现Runnable接口 实现Runnable接口是...

    thread 线程类 实现runnable接口

    "Thread 线程类实现 Runnable 接口" Thread 线程类是 Java 中 Thread 和 Runnable 接口的实现,它提供了线程的基本操作和管理。...开发者可以使用 Thread 类来创建和管理线程,以实现多线程编程。

    实现runnable接口创建线程

    声明自定义线程类实现Runnable接口实现奇数/偶数序列线程并发执行。

    android demo,Runnable异步线程的处理

    在Android开发中,异步线程的处理是至关重要的,特别是在UI交互中,为了保证用户界面的流畅性,我们通常需要将耗时操作放在后台线程执行,这就是Runnable异步线程的应用场景。本Android演示项目("android demo")...

    认识Thread和Runnable

    Thread 和 Runnable 是实现 Java 多线程的两种方式,Runnable 是接口,Thread 是类,建议使用 Runnable 实现 Java 多线程,不管如何,最终都需要通过 thread.start() 来使线程处于可运行状态。 Thread 的 start 和 ...

    Java-Java面向对象多态性教程

    Java是一种广泛使用的面向对象编程语言,其面向对象的特性之一就是多态性。多态性是面向对象编程的重要概念,它允许我们使用一个接口来表示多种类型的数据,从而增加了代码的灵活性和可重用性。在Java中,多态性的...

    实现Runnable接口和继承Thread类两种方式实现在屏幕上随机画正方形线程程序

    在多线程环境中,每个线程都可以独立地执行任务,互不干扰。 **一、实现Runnable接口** 1. 创建一个实现`Runnable`接口的类,如`RandomSquareRunnable`。在这个类中,我们需要重写`run()`方法,这是线程执行的主要...

    西安交大JAVA 基础讲义

    7.JAVA线程的概念,对Thread,Runable的实现原理做了丰富的图例 8.JAVA网络的概念,列举了丰富的Socket编程实例 9.使用JDBC,ODBC连接数据库,介绍了Connection,Statement ,ResultSet的使用方法和注意事项。

    Java与C++的比较

    Java的多线程是基于线程类的,通过Runable接口实现。Java虚拟机(JVM)负责线程的创建、调度和管理。C++则在语言层面提供了线程支持,并允许直接操作线程。 9. Windows编程: Java的Swing和AWT提供了跨平台的图形...

Global site tag (gtag.js) - Google Analytics