java中thread 和 runnable的区别

java中thread 和 runnable的区别

ID:19830042

大小:63.50 KB

页数:8页

时间:2018-10-06

java中thread 和 runnable的区别_第1页
java中thread 和 runnable的区别_第2页
java中thread 和 runnable的区别_第3页
java中thread 和 runnable的区别_第4页
java中thread 和 runnable的区别_第5页
资源描述:

《java中thread 和 runnable的区别》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、ThreadandRunnableThreadisthe进程,Runnableisthe进程对象[第一需要弄清的问题]  如同程序和进程的区别,要掌握多线程编程,第一要弄清的问题是:线程对象和线程的区别。  线程对象是可以产生线程的对象。比如在java平台中Thread对象,Runnable对象。线程,是指正在执行的一个指令序列。在java平台上是指从一个线程对象的start()开始,运行run方法体中的那一段相对独立的过程。  鉴于作者的水平,无法用更确切的词汇来描述它们的定义。但这两个有本质区别的概念请初学者细细体会,随

2、着介绍的深入和例程分析的增加,就会慢慢明白它们所代表的真实含义。  天下难事必始于易,天下大事必始于细。  让我们先从最简单的"单线程"来入手:(1)带引号说明只是相对而言的单线程,(2)基于java。classBeginClass{publicstaticvoidmain(String[]args){for(inti=0;i<100;i++)System.out.println("Hello,World!");}}  如果我们成功编译了该java文件,然后在命令行上敲入:  java BeginClass  现在发生了什么

3、呢?每一个java程序员,从他开始学习java的第一分钟里都会接触到这个问  题,但是,你知道它到底发生发什么?JVM进程被启动,在同一个JVM进程中,有且只有一个进程,就是它自己。然后在这个JVM环境中,所有程序的运行都是以线程来运行。JVM最先会产生一个主线程,由它来运行指定程序的入口点。在这个程序中,就是主线程从main方法开始运行。当main方法结束后,主线程运行完成。JVM进程也随之退出。  我们看到的是一个主线程在运行main方法,这样的只有一个线程执行程序逻辑的流程我们称之为单线程。这是JVM提供给我们的单线程

4、环境,事实上,JVM底层还至少有垃圾回收这样的后台线程以及其它非java线程,但这些线程对我们而言不可访问,我们只认为它是单线程的。  主线程是JVM自己启动的,在这里它不是从线程对象产生的。在这个线程中,它运行了main方法这个指令序列。理解它,但它没有更多可以研究的内容。  [接触多线程]classMyThreadextendsThread{publicvoidrun(){System.out.println("Threadsay:Hello,World!");}}publicclassMoreThreads{good,

5、noloosening.6.5.2DCSsidewiringtocompletetheenclosureandtheothersideafterthewiringiscompleted,DCSwithintheenclosurewhenthepowermoduleshouldbeloosenedorthepowergoesout.6.6lowvoltagecableterminalmaking6.6.1firstpublicstaticvoidmain(String[]args){newMyThread();newMyThr

6、ead().start();System.out.println("Mainsay:Hello,World");}}  执行这个程序,main方法第一行产生了一个线程对象,但并没有线程启动。  main方法第二行产生了一个线程对象,并启动了一个线程。  main方法第三行,产生并启动一个线程后,主线程自己也继续执行其它语句。  我们先不研究Thread对象的具体内容,稍微来回想一下上面的两个概念,线程对象和线程。在JAVA中,线程对象是JVM产生的一个普通的Object子类。而线程是CPU分配给这个对象的一个运行过程。我们说

7、的这个线程在干什么,不是说一个线程对象在干什么,而是这个运行过程在干什么。如果一时想不明白,不要急,但你要记得它们不是一回事就行了。现在我们来开始考察JAVA中线程对象:  在JAVA中,要开始一个线程,有两种方式。一是直接调用Thread实例的start()方法,二是将Runable实例传给一个Thread实例然后调用它的start()方法。  在前面已经说过,线程对象和线程是两个完全不同的概念。这里我们再次深入一下,生成一个线程的实例,并不代表启动了线程。而启动线程是说在某个线程对象上启动了该实例对应的线程,当该线程结束

8、后,并不会就立即消失。  对于从很多书籍上可以看到的基础知识我就不用多说了。既然是基础知识,我也着重于从普通文档上读不到的内容。所以本节我重点要说的是两种线程对象产生线程方式的区别。classMyThreadextendsThread{publicintx=0;publicvoidrun(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。