多线程是为了使得多个线程并行的工作以完成多项任务,以提高系统的效率。线程是在同一时间需要完成多项任务的时候被实现的。
在java中要想实现多线程,有两种方法,一种是继承Thread类,另外一种是实现Runable接口。对于一个进程中的多个线程来说,多个线程共享进程的内存块,当有新的线程产生的时候,操作系统不分配新的内存,而是让新线程共享原有的进程块的内存。因此,线程间的通信很容易,速度也很快。不同的进程因为处于不同的内存块,因此进程之间的通信相对困难。多线程的目的是为了最大限度的利用CPU资源。
程序中继承Thread类时调用的是start()方法,但是实际上调用的还是run()方法的主体。为什么我们不能直接调用run()方法呢?因为线程的运行需要本地操作系统的支持。查看start的源代码的时候,会发现调用的是start0(),并且这个这个方法用了native关键字,此关键字表示调用本地操作系统的函数,因为多线程的实现需要本地操作系统的支持。
实现Runnable接口,class 类名 implements Runnable{}。Thread和Runnable的区别,首先如果一个类继承Thread,则不适合资源共享,但是如果实现了Runable接口的话,则很容易的实现资源共享。其次,其实Thread也是实现Runnable接口的,class Thread implements Runnable{},Thread中的run方法调用的是Runnable接口的run方法,Thread和Runnable都实现了run方法。当使用 runnable 接口时,您不能直接创建所需类的对象并运行它;必须从 Thread 类的一个实例内部运行它。许多程序员更喜欢 runnable 接口,因为Java多线程编程从 Thread 类继承会强加类层次。
实现Runnable接口比继承Thread类所具有的优点
1.适合多个相同的程序代码的线程去处理同一个资源
2.可以避免java中的单继承的限制
3.增加程序的健壮性,代码可以被多个线程共享,代码和数据独立[/align]
分享到:
相关推荐
多线程两种实现方式Java,MLDN,实训课程中的多线程
1、Java有两种实现多线程的方式:通过Runnable接口、通过Thread直接实现,请掌握这两种实现方式,并编写示例程序。 2、多线程是并发执行的,交替占有cpu执行,请编写示例程序,并观察输出结果。 3、采用线程同步方法...
Qt两种方法实现多线程的开启,及子线程的安全结束线程,及QMutex加锁,Qt单例化实现
本文首先介绍了线程的有关概念,接着介绍了线程的生命期及其状态间的转换,多线程的调度 原则,线程的死锁,详细阐述了多线程的两种实现方法: 由Thread类派生子类;实现Runnable接口
Java中有两种实现多线程的方式。一是直接继承Thread类,二是实现Runnable接口。那么这两种实现多线程的方式在应用上有什么区别呢? 为了回答这个问题,我们可以通过编写一段代码来进行分析。我们用代码来模拟铁路...
线程的概念及简单实现博客源代码。想要学习更多有关于Java多线程的知识,请关注博客http://blog.csdn.net/yegongheng
网络编程示例-FTP客户端软件(分别用单线程和多线程两种方法实现,包含详细设计过程)[汇编].pdf
包括线程的介绍,与进程的区别,多线程与单线程,怎样实现多线程。用户级线程的优缺点。
介绍了JAVA实现多线程的两种方法实例分享,有需要的朋友可以参考一下
1. 在Windows操作系统上,利用... 在上述两种环境下,实现相乘操作的两个矩阵均作为应用程序的输入参数动态生成,并输出计算结果。 4. 在程序实现过程中,要求每个乘积矩阵元素的计算过程均由一个独立的线程实现。
多线程 1. 什么是线程: 线程就是程序中单独顺序的流控制。线程本身不能运行,它只能用于程序中。 2. 什么是多线程: 多线程则指的是在单个...然而,多任务处理有两种截然不同的类型: 基于进程的和基于线程的。
在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口(csdn)————程
使得任何两台安装了TCP 协议软件和实现了Socket 规范的计算机之间的通信成为可能,Socket 接口是TCP/IP 网络最为通用的应用接口,也是在Internet 上进行网络程序应用开发最通用的API[1],本文介绍了Socket通信的基本...
使用Qt也已经有一段时间了,虽然使用过继承QThread重写run函数,以及继承QObject然后使用MoveToThread两种方法实现多线程,但是在QSerialPort的使用过程中,两种方法都存在一定的问题。 典型的问题: QObject: ...
本文主要介绍了Java多线程实现的两种方式:继承Thread类、实现Runnable接口。具有一定的参考价值,下面跟着小编一起来看下吧
对QT中多线程的使用方式moveToThread方法进行剖析,通过新建两种不同的类分别实现moveToThread方法,并通过实例化对象验证该方法。
很不错的文章,讲解了多线程的两种方式,各自的使用特色
模拟银行取号,服务,结束服务的过程,用户到银行后先取号排队等待,然后银行的各个窗口开始叫号,整个ap采用多线程方法,使用VS2005(VC)开发,包含完整的声音文件
一个多线程的文件拷贝工具的实现,文件操作接口使用了内存映射模型的方式实现,可以指定线程数量,可以在拷贝过程中查看整体的进度信息(进度、速度、剩余时间、已用时间),同时可以查看每个子线程对应的进度信息。...
Qt线程间共享数据主要有两种方式: 1)使用共享内存。即使用一个两个线程都能够共享的变量(如全局变量),这样两个线程都能够访问和修改该变量,从而达到共享数据的目的。 2)使用singal/slot机制,把数据从一个...