<b>Java多线程编程底子之线程和多线程</b>[Java编程]
本文“<b>Java多线程编程底子之线程和多线程</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
随着计算机技术的发展,编程模子也越来越复杂多样化.但多线程编程模子是目前计算机系统架构的终究模子.随着CPU主频的不断爬升,X86架构的硬件已经成为瓶,在这种架构的CPU主频最高为4G.事实上目前3.6G主频的CPU已经接近了颠峰.
假如不能从根本上更新当前CPU的架构(在很长一段时间内还不太大概),那么持续提高CPU性能的办法就是超线程CPU情势.那么,功课系统、利用程序要施展CPU的最大性能,就是要改变到以多线程编程模子为主的并行处理系统和并发式利用程序.
所以,掌握多线程编程模子,不但是目前提高利用性能的手段,更是下一代编程模子的核心机惟.多线程编程的目的,就是"最大限度地操纵CPU资源",当某一线程的处理不需求占用CPU而只和I/O,OEMBIOS等资源打交道时,让需求占用CPU资源的别的线程有机会得到CPU资源.从根本上说,这就是多线程编程的终究目的.
第一需求弄清的问题
好像程序和进程的辨别,要掌握多线程编程,第一要弄清的问题是:线程对象和线程的辨别.
线程对象是可以产生线程的对象.比方在java平台中Thread对象,Runnable对象.线程,是指正在履行的一个指导令序列.在java平台上是指从一个线程对象的start()开始,运行run办法体中的那一段相对独立的历程.
鉴于作者的水平,无法用更切当的词汇来描写它们的定义.但这两个有本质辨别的概念请初学者细细领会,随着介绍的深化和例程解析的增添,就会渐渐懂得它们所代表的真实含义.
天下难事必始于易,天下大事必始于细.
让我们先从最简单的"单线程"来动手:(1)带引号阐明只是相对而言的单线程,(2)基于java.
1 class BeginClass{ 2 3 public static void main(String[] args){ 4 5 for(int i=0;i<100;i++) 6 7 System.out.println("Hello,World!"); 8 9 } 10 11 } 12 13 |
假如我们成功编译了该java文件,然后在号令行上敲入:
1 java BeginClass |
目前发生了什么呢?每一个java程序员,从他开始学习java的第一分钟里城市接触到这个问题,但是,你知道它到底发生发什么?
JVM进程被启动,在同一个JVM进程中,有且只有一个进程,就是它自己.然后在这个JVM环境中,全部程序的运行都是以线程来运行.JVM最早会产生一个主线程,由它来运行指定程序的进口点.在这个程序中,就是主线程从main办法开始运行.当main办法完毕后,主线程运行完成.JVM进程也随之退出.
我们看到的是一个主线程在运行main办法,这样的只有一个线程执路程序逻辑的流程我们称
之为单线程.这是JVM供应应我们的单线程环境,事实上,JVM底层还至少有垃圾回收这样的后台线程以及别的非java线程,但这些线程对我们而言不可拜候,我们只认为它是单线程的.
主线程是JVM自己启动的,在这里它不是从线程对象产生的.在这个线程中,它运行了main办法这个指令序列.理解它,但它没有更多可以研究的内容.
接触多线程
1 class MyThread extends Thread{ 2 3 public void run(){ 4 5 System.out.println("Thread say:Hello,World!"); 6 7 } 8 9 } 10 11 public class MoreThreads{ 12 13 public static void main(String[] args){ 14 15 new MyThread(); 16 17 new MyThread().start(); 18 19 System.out.println("Main say:Hello,World"); 20 21 } 22 23 } 24 25 |
履行这个程序,main办法第一行产生了一个线程对象,但并没有线程启动.
main办法第二行产生了一个线程对象,并启动了一个线程.
main办法第三行,产生并启动一个线程后,主线程自己也持续履行别的语句.
我们先不研究Thread对象的具体内容,略微往复想一下上面的两个概念,线程对象和线程.在JAVA中,线程对象是JVM产生的一个普通的Object子类.而线程是CPU分配给这个对象的一个运行历程.我们说的这个线程在干什么,不是说一个线程对象在干什么,而是这个运行历程在干什么.假如一时想不懂得,不要急,但你要记得它们不是一回事就行了.
以上是“<b>Java多线程编程底子之线程和多线程</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |