`
learen
  • 浏览: 11139 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

黑马程序员 Thread与Runnable的使用

 
阅读更多

    ------- android培训java培训、期待与您交流! ----------

 

    它们是有区别的,并不能通用,只是有些时候效果一样。下面是详细解释:我们使用多线程,无非就是想利用多线程的优点,来更好的实现我们的想法。

    多线程有哪些优点呢?

    一、多线程共享同一块内存空间和一组系统资源

    二、线程本身的数据通常都是只有微处理器的寄存器数据,以及供程序执行的堆栈。所以系统在产生一个线程或者线程的切换要比进程系统的负担小很多。

    现在我们来了解一些Thread类。    

public class ThreadDemo

{   

    public static void main(String []args)   

    {   

        ThreadTest t=new ThreadTest();   

        t.start();   

        t.start();   

        t.start();   

        t.start();   

    }   

}   

class ThreadTest extends Thread   

{   

    private int count=10;   

    public void run()   

    {   

        while(count>0)   

        {   

            System.out.println(Thread.currentThread().getName()+"   "+count--);   

        }   

    }   

}  

    运行后,我们发现其实只启动了一个线程。

    是不是程序有问题呢?我们修改一下程序。 

public  class ThreadDemo   

{   

    public static void main(String []args)   

    {   

        new ThreadTest().start();   

        new ThreadTest().start();   

        new ThreadTest().start();   

        new ThreadTest().start();   

    }   

}   

class ThreadTest extends Thread   

{   

    private int count=10;   

    public void run()   

    {   

        while(count>0)   

        {   

            System.out.println(Thread.currentThread().getName()+"   "+count--);   

        }   

    }   

}

    再次运行,发现这四个线程对象各自占有各自的资源,并不是同时完成统一任务。

    我们可以得出结论:Thread类实际上无法达到资源共享的目的。

    那么,Runnable接口能不能达到这一目的呢?

    我们大可试一下。

public  class ThreadDemo   

{   

    public static void main(String []args)   

    {   

        ThreadTest test=new ThreadTest();   

        new Thread(test).start();   

        new Thread(test).start();   

        new Thread(test).start();   

        new Thread(test).start();   

    }   

}   

class ThreadTest implements Runnable   

{   

    private int count=10;   

    public void run()   

    {   

        while(count>0)   

        {   

            System.out.println(Thread.currentThread().getName()+"   "+count--);   

        }   

    }   

} 

    运行之后我们发现,这四个线程同时完成了我们需要完成的任务。

    通过以上比较我们即可得出Thread与Runnable的区别:

    1、Runnable适合于多个相同程序代码线程去处理统一资源的情况,把虚拟的cpu(线程)同程序的代码,数据有效分离,较好体现面向对象的编程的思想

    2、Runnable可以避免由于java的单继承机制带来的局限。可以再继承其他类的同时,还能实现多线程的功能。

    3、Runnable能增加程序的健壮性。代码能够被多个线程共享。

分享到:
评论

相关推荐

    黑马程序员入学面试题

    - **线程创建方式**:可以通过实现Runnable接口或者继承Thread类来创建线程。 - **进程与线程**:进程是操作系统资源分配的基本单位,而线程是CPU调度的基本单位,一个进程中可以有多个线程。 #### 20. 局部变量和...

    黑马程序员入学Java精华总结

    ### 黑马程序员入学Java精华总结 #### 一、Java概述与基础知识 1. **何为编程?** - 编程是指通过编写计算机能够理解的指令来解决问题或完成特定任务的过程。这些指令通常被组织成算法,并使用某种编程语言实现。...

    黑马程序员安卓 笔记代码(包含源码) 第76期

    7. **多线程**:学习如何在Android中使用Handler、Looper、Runnable和Thread来处理耗时任务。 8. **网络编程**:理解AsyncTask,使用HttpURLConnection或OkHttp进行网络请求,处理JSON数据。 9. **权限管理**:...

    黑马程序员Android视频教程

    ### 黑马程序员Android视频教程知识点解析 #### 一、Android基础概述 - **定义与特点**:Android是一种基于Linux内核(不包括GNU组件)的开源操作系统,主要用于移动设备。它由Google公司及其领导下的开放手机联盟...

    多线程高新(黑马程序员)

    在黑马程序员的课程中,可能涵盖了以上知识点的详细讲解,包括如何创建线程、使用线程池、处理并发异常、调试多线程程序以及相关工具的使用。通过学习这些内容,开发者能够掌握多线程编程的基本技能,提高软件的并发...

    黑马程序员java面试宝典 完整版PDF.rar

    4. **多线程**:线程的创建(Thread类和Runnable接口)、线程同步(synchronized关键字、wait/notify机制、Lock接口)、线程池(ExecutorService)都是面试中的常见话题。 5. **IO/NIO/BIO**:输入输出流的使用,非...

    黑马程序员-java多线程技术01

    本教程将聚焦于Java中的多线程技术,以“黑马程序员-java多线程技术01”为学习起点,探讨如何在Java中实现并管理线程。 首先,我们来理解什么是线程。线程是操作系统分配CPU时间的基本单元,一个进程中可以有多个...

    黑马程序员面试宝典(java)2018版

    - 基本数据类型:了解整型、浮点型、字符型和布尔型的存储与使用。 - 数据类型转换:掌握自动类型提升和强制类型转换。 - 数组:理解一维、二维数组的声明、初始化和遍历。 3. **字符串(String)** - String类的...

    黑马程序员入学Java知识——精华总结.doc

    Java内置了对多线程的支持,通过Thread类或实现Runnable接口可以创建并管理多个执行线程。 17. **网络编程**: Java提供了丰富的API进行网络通信,如Socket和ServerSocket类,用于客户端和服务器之间的连接。 ...

    黑马程序员入学Java知识(精华总结)

    ### 黑马程序员入学Java知识(精华总结) #### 一、Java概述与基础知识 ##### 1、何为编程? 编程是指使用计算机语言来编写指令,这些指令被计算机执行以完成特定任务的过程。通过编程,我们可以控制计算机的行为...

    黑马程序员毕向东java基础课堂完整版文档

    5. **多线程**:介绍线程的创建与同步,包括Thread类和Runnable接口,以及synchronized、wait、notify关键字的使用。 6. **网络编程**:讲解Socket编程的基本原理和应用,以及URL、URLConnection的使用。 此外,...

    黑马程序员–Java多线程讲解笔记

    2. 实现Runnable接口:子类实现Runnable接口并覆写run()方法,然后通过Thread类的构造函数传入Runnable对象并启动线程。这种方式更灵活,可以避免单继承的限制,并且可以实现代码和数据的分离,有利于代码的重用和...

    黑马程序员入学Java知识——精华总结

    8. **多线程**:Java内置对多线程的支持,通过`Thread`类和`Runnable`接口可以创建并管理线程。理解线程同步和互斥的概念,如`synchronized`关键字和`wait()`, `notify()`方法,有助于编写高效的并发程序。 9. **...

    黑马程序员《Java自学宝典》源代码

    8. **多线程**:学习如何创建和管理线程,包括Thread类和Runnable接口,以及同步机制(如synchronized关键字、wait()、notify()方法)。 9. **反射**:理解反射机制,能够动态地获取类的信息和调用方法。 10. **...

    黑马程序员Android核心基础视频的代码

    13. **多线程与线程池**: Android应用通常需要在多个线程中执行任务以提高性能,例如使用Handler、Runnable、Thread或ExecutorService。 14. **网络编程**: Android支持HTTP、HTTPS协议进行网络通信,可以使用...

    黑马程序员入学Java知识

    ### 黑马程序员入学Java知识 #### Java概述与基础知识 1. **何为编程?** - 编程是通过特定的计算机语言来编写指令,让计算机能够执行一系列任务的过程。 2. **Java语言概述,历史、特点** - Java是一种广泛...

    黑马程序员_毕向东最新经典Java基础视频

    根据提供的文件信息,我们可以推断出这是一套由知名IT教育机构“黑马程序员”出品、由讲师毕向东主讲的Java基础教学视频。由于实际视频内容无法直接获取,本篇将依据标题、描述以及部分标签内容,综合分析并展开相关...

    黑马程序员_张孝祥_Java多线程与并发库 视频+代码+资料

    - 实现`Runnable`接口:定义一个实现了`Runnable`接口的类,并实现其中的`run()`方法,然后将其作为参数传递给`Thread`类的构造函数。 3. **线程状态**:Java中的线程有多种状态,包括新建(New)、就绪(Runnable...

    黑马程序员_Java基础辅导班教程课件[第01期]第4天

    在"黑马程序员_Java基础辅导班教程课件[第01期]第4天"中,我们可以推测这是针对初学者的Java编程课程,旨在帮助学员掌握Java的基础知识。 在课程的第4天,可能讲解了以下核心概念: 1. **类(Class)**:`Demo.class...

Global site tag (gtag.js) - Google Analytics