- 浏览: 403673 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
dageda_jgw:
...
JSF定义及原理 -
尘土飞扬:
这个在NB7中已经无效了,加不加都会提示 UTF8打不开
Netbeans统一UTF-8编码的方法 -
ouyangkang20:
不对
Struts target is null for setProperty(null, "x", [Ljava.lang.String;@179da9f) -
wpf523:
hahah,很不错啊
mysql安装图解教程 5.1 -
taburissmeng:
action中相应的属性没有set get方法就会报这样的错。 ...
Struts target is null for setProperty(null, "x", [Ljava.lang.String;@179da9f)
JAVA 教程:解析Java 的多线程机制 |
|
作者: 未知 时间:2005-05-03 12:12 出处: 赛迪网 责编:My FAQ |
|
摘要:暂无 |
|
|
来源于 : http://www.myfaq.com.cn/A/2005-05-03/142139.html
随着计算机技术的发展,编程模型也越来越复杂多样化。但多线程编程模型是目前计算机系统架构的最终模型。随着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
。
class BeginClass{ |
如果我们成功编译了该java
文件,然后在命令行上敲入:
java BeginClass
现在发生了什么呢?每一个java
程序员,从他开始学习java
的第一分钟里都会接触到这个问题,但是,你知道它到底发生发什么?
JVM
进程被启动,在同一个JVM
进程中,有且只有一个进程,就是它自己。然后在这个JVM
环境中,所有程序的运行都是以线程来运行。JVM
最先会产生一个主线程,由它来运行指定程序的入口点。在这个程序中,就是主线程从main
方法开始运行。当main
方法结束后,主线程运行完成。JVM
进程也随之退出。
我们看到的是一个主线程在运行main
方法,这样的只有一个线程执行程序逻辑的流程我们称
之为单线程。这是JVM
提供给我们的单线程环境,事实上,JVM
底层还至少有垃圾回收这样的后台线程以及其它非java
线程,但这些线程对我们而言不可访问,我们只认为它是单线程的。
主线程是JVM
自己启动的,在这里它不是从线程对象产生的。在这个线程中,它运行了main
方法这个指令序列。理解它,但它没有更多可以研究的内容。
[
接触多线程]
class MyThread extends Thread{ |
执行这个程序,main
方法第一行产生了一个线程对象,但并没有线程启动。
main
方法第二行产生了一个线程对象,并启动了一个线程。
main
方法第三行,产生并启动一个线程后,主线程自己也继续执行其它语句。
我们先不研究Thread
对象的具体内容,稍微来回想一下上面的两个概念,线程对象和线程。在JAVA
中,线程对象是JVM
产生的一个普通的Object
子类。而线程是CPU
分配给这个对象的一个运行过程。我们说的这个线程在干什么,不是说一个线程对象在干什么,而是这个运行过程在干什么。如果一时想不明白,不要急,但你要记得它们不是一回事就行了。
累了吧?为不么不继续了?
基于这种风格来介绍多线程,并不是每个人都喜欢和接受的,如果你不喜欢,正好不浪费你的时间了,而如果你接受的话,那就看下一节吧。
http://www.2438.cn/it/3210/101709946.html
发表评论
-
如何获得JVM的最大可用内存
2010-06-26 17:47 2062在命令行下用 java -XmxXXXXM -version ... -
java程序的时间与系统时间不同
2010-04-15 21:43 1512实施软件时,windows时区、语言设置都正常,但java程序 ... -
java集合框架全面进阶
2009-05-22 20:07 1119java集合框架全面进阶 java集合框架全面进 ... -
Jsp+JavaBean教程
2009-05-22 18:50 3755按着Sun公司的定义,JavaBean是一个可重复使用的软件组 ... -
Java常用术语解释
2009-05-22 17:39 2289名词 解释 AAA ... -
Java面向对象概述
2009-05-22 17:23 998(如今的程序领域,大家都在说,面向对象OOP,但是真正能理解 ... -
java入门与加深
2009-05-22 17:13 9221 什么是Java、Java2、JDK ... -
利用Java事件处理机制实现录制、回放功能
2009-05-22 17:04 1523利用Java事件处理机制实 ... -
数据类型
2009-05-22 17:00 1072【导读】Java 提供 ... -
java数据类型转换
2009-05-22 16:57 1152[收藏]java数据类型转换 一些初学JAVA ... -
Java异常学习心得
2009-05-22 16:47 1395Java 异常学习心得 本文重在 Java ... -
哈希表
2009-05-22 16:23 1434哈希表的概念作用及意义,哈希表的构造方法 ... -
Java接口常用方法
2009-05-22 16:20 2831接口是实现构件可插入性的关键,可插入构件的关键在于存在一 ... -
一个简单的SWT程序实例及详解
2009-05-22 16:04 1725网易学院 一个 ... -
String的比较
2009-05-22 15:34 1301关于java中的equals() 悬 ... -
JVM(JAVA虚拟机介绍)
2009-05-22 15:30 1190JVM(JAVA虚拟机介绍) 来 ... -
如果安装了JDK,会发同你的电脑有两套JRE
2009-05-22 15:29 1416如果安装了JDK,会发同 ... -
文件选择对话框,颜色选择对话框,分隔线的使用与介绍
2009-05-22 15:12 2607文件选择对话框,颜色选择对话框,分隔线的使用与介绍 ++ ... -
Java, JVM, JRE, Java API, Java类库, 编译器, 解释器,
2009-05-22 14:57 2478Java, JVM, JRE, Ja ... -
根据CLASSPATH环境变量定位类
2009-05-17 17:47 2302实际上,如果使用1.5以上版本的JDK,完全可以不用设置CLA ...
相关推荐
c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程...
基于SpringBoot和POI实现单线程和多线程导出Excel.zip基于SpringBoot和POI实现单线程和多线程导出Excel.zip基于SpringBoot和POI实现单线程和多线程导出Excel.zip基于SpringBoot和POI实现单线程和多线程导出Excel.zip...
Qt 多线程及简单实例 demo。 多线程的几大特点: 1.多线程的执行顺序无法保证,与操作系统的调度策略和线程优先级等因素有关。 2.多线程的切换可能发生在任何时刻、任何地点。 3.多线程对代码的敏感度高,因此对...
Qt中利用OpenCV2.4.4多线程打开多摄像机 每个线程处理一个摄像机,从中拿出帧显示到主线程的Label控件上 模拟了一个16个摄像机的场景,有不开多线程和打开多线程的对比。 可以明显感觉到打开多线程后主界面不卡了。 ...
在计算机处理器发展为包含越来越多的核心的时期,多线程是创建可伸缩性、高效的、高响应性应用程序的关键因素。如果你没有正确地使用多线程,它会导致难以捉摸的问题,需要你花费大量时间去解决。因此,现代应用程序...
最近用多线程用的比较多自己走了一些弯路,分享出来希望大家少走弯路,C#中的多线程有两个重载,一个是不带参数的,一个是带参数的,但是即便是带参数的多线程也不支持泛型,这使得使用泛型参数多线程的时候很不方便...
c语言多进程多线程编程
串口通信的实现,编程环境为C#,实现技术采用了多线程方式
Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式...
Win32多线程程序设计.pdf(带目录)Win32多线程程序设计.pdf(带目录)Win32多线程程序设计.pdf(带目录)Win32多线程程序设计.pdf(带目录)Win32多线程程序设计.pdf(带目录)Win32多线程程序设计.pdf(带目录)...
c#大漠多线程模板
Qt中利用OpenCV2.4.4多线程打开多摄像机 每个线程处理一个摄像机,从中拿出帧显示到主线程的Label控件上 模拟了一个16个摄像机的场景,有不开多线程和打开多线程的对比。 可以明显感觉到打开多线程后主界面不卡了。 ...
Java多线程编程实战指南(核心篇) 高清pdf带目录 随着现代处理器的生产工艺从提升处理器主频频率转向多核化,即在一块芯片上集成多个处理器内核(Core),多核处理器(Multicore Processor)离我们越来越近了――如今...
C#.NET多线程实例6个(包括多线程基本使用,多线程互斥等全部多线程使用实例),可直接运行
多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程
是多线程的测试,对学习多线程的朋友有用,使用C#2008来编写的,需要的朋友可以去下载
java多线程PPT 多线程基本概念 创建线程的方式 线程的挂起与唤醒 多线程问题
excel vba 多线程 实例 excel vba 多线程 实例
简单多线程编程入门,可以帮助你实现第一个多线程程序
最近收集的VB.Net-C#多线程Thread-代理委托delegate编程。文章列表: c#.net多线程同步.txt C#WebBrowser页面与WinForm交互技巧一.txt C#多线程编程-多细全.txt C#多线程编程简单实例.txt C#多线程窗体控件安全访问....