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

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里面与多线程有关的函数)

    Java多线程机制 9.1 Java中的线程 9.2 Thread的子类创建线程 9.3 使用Runable接口 9.4 线程的常用方法 9.5 GUI线程 9.6 线程同步 9.7 在同步方法中使用wait()、notify 和notifyAll()方法 9.8 挂起、恢复和终止线程 ...

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

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

    java-龟兔赛跑Runable

    java-龟兔赛跑Runable

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

    主要介绍了Java多线程Runable售票系统实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    java_Thread.rar_java thread runable_thread runable

    java线程的具体使用代码,包括Thread,Runable的具体使用。

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

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

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

    主要介绍了多线程及Runable 和Thread的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    java中的多线程

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

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

    在Java中只支持单继承,因此通过继承Thread类创建线程有一定的局限性,这时可以使用另一种方式,即实现Runnable接口来...接下来在案例中将通过实现Runnable接口方式创建线程,并实现多线程分别打印0~99的数字的功能。

    多线程例子

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

    Java多线程

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

    thread 线程类 实现runnable接口

    thread 线程类 实现runnable接口

    Java多线程继承Thread类详解第1/2页

    Java多线程的两种实现方式:继承Thread类 & 实现Runable接口,今天我们来学习下继承Thread类,希望大家能够喜欢

    Java创建多线程的两种方式对比

    在Java中创建线程的方式有两种,第一种是直接继承Thead类,另一种是实现Runable接口。那么这两种方式孰优孰劣呢?这就是本文需要探讨的内容范畴了,看官们请仔细向下看

    实现runnable接口创建线程

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

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

    简单实现多线程同步示例(模拟购票系统),内容为实现多线程同步过程,模拟购票系统进行同步购买情况;该处并未考虑线程守护问题,后期将对线程锁等安全问题进行初步研究!

    android demo,Runnable异步线程的处理

    android demo,Runnable异步线程的处理

    图解Java线程的生命周期

    本文主要介绍了Java中线程的5种状态(新建(New)、就绪(Runable)、运行(Running)、阻塞(Blocked)和死亡(Dead))之间的转换图解,有需要的朋友可以参考下

    西安交大JAVA 基础讲义

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

    Thread实现两个线程打印0-10

    继承Thread类 1 实现Runable接口 2 继承Thread类: 3 必须重写run 方法:里面放置的实际的线程体 4 启动线程: 5 创建Thread对象 6 调用Thread对象的start 方法启动线程 7 在子类中定义static静态变量实现资源共享

Global site tag (gtag.js) - Google Analytics