﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-Be happy with Java</title><link>http://www.blogjava.net/sybil/</link><description /><language>zh-cn</language><lastBuildDate>Tue, 12 May 2026 08:54:41 GMT</lastBuildDate><pubDate>Tue, 12 May 2026 08:54:41 GMT</pubDate><ttl>60</ttl><item><title>线程池</title><link>http://www.blogjava.net/sybil/archive/2007/02/04/97847.html</link><dc:creator>SYBIL@BLOGJAVA</dc:creator><author>SYBIL@BLOGJAVA</author><pubDate>Sun, 04 Feb 2007 04:28:00 GMT</pubDate><guid>http://www.blogjava.net/sybil/archive/2007/02/04/97847.html</guid><wfw:comment>http://www.blogjava.net/sybil/comments/97847.html</wfw:comment><comments>http://www.blogjava.net/sybil/archive/2007/02/04/97847.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sybil/comments/commentRss/97847.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sybil/services/trackbacks/97847.html</trackback:ping><description><![CDATA[
		<h1>
				<font size="4">100行Java代码构建一个线程池</font>
		</h1>
		<p>在现代的操作系统中，有一个很重要的概念――线程，几乎所有目前流行的操作系统都支持线程，线程来源于操作系统中进程的概念，进程有自己的虚拟地址空间以及正文段、数据段及堆栈，而且各自占有不同的系统资源（例如文件、环境变量等等）。与此不同，线程不能单独存在，它依附于进程，只能由进程派生。如果一个进程派生出了两个线程，那这两个线程共享此进程的全局变量和代码段，但每个线程各拥有各自的堆栈，因此它们拥有各自的局部变量，线程在UNIX系统中还被进一步分为用户级线程（由进程自已来管理）和系统级线程（由操作系统的调度程序来管理）。<br /><br />　　既然有了进程，为什么还要提出线程的概念呢？因为与创建一个新的进程相比，创建一个线程将会耗费小得多的系统资源，对于一些小型的应用，可能感觉不到这点，但对于那些并发进程数特别多的应用，使用线程会比使用进程获得更好的性能，从而降低操作系统的负担。另外，线程共享创建它的进程的全局变量，因此线程间的通讯编程会更将简单，完全可以抛弃传统的进程间通讯的IPC编程，而采用共享全局变量来进行线程间通讯。<br /><br />　　有了上面这个概念，我们下面就进入正题，来看一下线程池究竟是怎么一回事？其实线程池的原理很简单，类似于操作系统中的缓冲区的概念，它的流程如下：先启动若干数量的线程，并让这些线程都处于睡眠状态，当客户端有一个新请求时，就会唤醒线程池中的某一个睡眠线程，让它来处理客户端的这个请求，当处理完这个请求后，线程又处于睡眠状态。可能你也许会问：为什么要搞得这么麻烦，如果每当客户端有新的请求时，我就创建一个新的线程不就完了？这也许是个不错的方法，因为它能使得你编写代码相对容易一些，但你却忽略了一个重要的问题――性能！就拿我所在的单位来说，我的单位是一个省级数据大集中的银行<a class="wordstyle" href="http://www.newasp.net/" target="_blank"><font color="#002c99">网络</font></a>中心，高峰期每秒的客户端请求并发数超过100，如果为每个客户端请求创建一个新线程的话，那耗费的CPU时间和内存将是惊人的，如果采用一个拥有200个线程的线程池，那将会节约大量的的系统资源，使得更多的CPU时间和内存用来处理实际的商业应用，而不是频繁的线程创建与销毁。<br /><br />　　既然一切都明白了，那我们就开始着手实现一个真正的线程池吧，线程编程可以有多种语言来实现，例如C、C＋＋、java等等，但不同的操作系统提供不同的线程API接口，为了让你能更明白线程池的原理而避免陷入烦琐的API调用之中，我采用了JAVA语言来实现它，由于JAVA语言是一种跨平台的语言，因此你不必为使用不同的操作系统而无法编译运行本程序而苦恼，只要你安装了JDK1.2以上的版本，都能正确地编译运行本程序。另外JAVA语言本身就内置了线程对象，而且JAVA语言是完全面像对象的，因此能够让你更清晰地了解线程池的原理，如果你注意看一下本文的标题，你会发现整个示例程序的代码只有大约100行。<br /><br />　　本示例程序由三个类构成，第一个是TestThreadPool类，它是一个测试程序，用来模拟客户端的请求，当你运行它时，系统首先会显示线程池的初始化信息，然后提示你从键盘上输入字符串，并按下回车键，这时你会发现屏幕上显示信息，告诉你某个线程正在处理你的请求，如果你快速地输入一行行字符串，那么你会发现线程池中不断有线程被唤醒，来处理你的请求，在本例中，我创建了一个拥有10个线程的线程池，如果线程池中没有可用线程了，系统会提示你相应的警告信息，但如果你稍等片刻，那你会发现屏幕上会陆陆续续提示有线程进入了睡眠状态，这时你又可以发送新的请求了。<br /><br />　　第二个类是ThreadPoolManager类，顾名思义，它是一个用于管理线程池的类，它的主要职责是初始化线程池，并为客户端的请求分配不同的线程来进行处理，如果线程池满了，它会对你发出警告信息。<br /><br />　　最后一个类是SimpleThread类，它是Thread类的一个子类，它才真正对客户端的请求进行处理，SimpleThread在示例程序初始化时都处于睡眠状态，但如果它接受到了ThreadPoolManager类发过来的调度信息，则会将自己唤醒，并对请求进行处理。 <br /><br /><br />　　首先我们来看一下TestThreadPool类的源码：<br /><br /><br /><br />//TestThreadPool.java<br />1 import java.io.*;<br />2<br />3<br />4 public class TestThreadPool<br />5 {<br />6 public static void main(String[] args)<br />7 {<br />8 try{<br />9 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));<br />10 String s;<br />11 ThreadPoolManager manager = new ThreadPoolManager(10);<br />12 while((s = br.readLine()) != null)<br />13 {<br />14 manager.process(s);<br />15 }<br />16 }catch(IOException e){}<br />17 }<br />18 } <br /><br /><br /><br />　　由于此测试程序用到了输入输入类，因此第1行导入了JAVA的基本IO处理包，在第11行中，我们创建了一个名为manager的类，它给ThreadPoolManager类的构造函数传递了一个值为10的参数，告诉ThreadPoolManager类：我要一个有10个线程的池，给我创建一个吧！第12行至15行是一个无限循环，它用来等待用户的键入，并将键入的字符串保存在s变量中，并调用ThreadPoolManager类的process方法来将这个请求进行处理。<br /><br />　　下面我们再进一步跟踪到ThreadPoolManager类中去，以下是它的源代码：<br /><br /><br /><br />//ThreadPoolManager.java<br />1 import java.util.*;<br />2<br />3<br />4 class ThreadPoolManager<br />5 {<br />6<br />7 private int maxThread;<br />8 public Vector vector;<br />9 public void setMaxThread(int threadCount)<br />10 {<br />11 maxThread = threadCount;<br />12 }<br />13<br />14 public ThreadPoolManager(int threadCount)<br />15 {<br />16 setMaxThread(threadCount);<br />17 System.out.println("Starting thread pool...");<br />18 vector = new Vector();<br />19 for(int i = 1; i &lt;= 10; i++)<br />20 {<br />21 SimpleThread thread = new SimpleThread(i);<br />22 vector.addElement(thread);<br />23 thread.start();<br />24 }<br />25 }<br />26<br />27 public void process(String argument)<br />28 {<br />29 int i;<br />30 for(i = 0; i &lt; vector.size(); i++)<br />31 {<br />32 SimpleThread currentThread = (SimpleThread)vector.elementAt(i);<br />33 if(!currentThread.isRunning())<br />34 {<br />35 System.out.println("Thread "+ (i+1) +" is processing:" +<br />argument);<br />36 currentThread.setArgument(argument);<br />37 currentThread.setRunning(true);<br />38 return;<br />39 }<br />40 }<br />41 if(i == vector.size())<br />42 {<br />43 System.out.println("pool is full, try in another time.");<br />44 }<br />45 }<br />46 }//end of class ThreadPoolManager <br /><br /><br /><br />　　我们先关注一下这个类的构造函数，然后再看它的process()方法。第16－24行是它的构造函数，首先它给ThreadPoolManager类的成员变量maxThread赋值，maxThread表示用于控制线程池中最大线程的数量。第18行初始化一个数组vector，它用来存放所有的SimpleThread类，这时候就充分体现了JAVA语言的优越性与艺术性：如果你用C语言的话，至少要写100行以上的代码来完成vector的功能，而且C语言数组只能容纳类型统一的基本数据类型，无法容纳对象。好了，闲话少说，第19－24行的循环完成这样一个功能：先创建一个新的SimpleThread类，然后将它放入vector中去，最后用thread.start()来启动这个线程，为什么要用start()方法来启动线程呢？因为这是JAVA语言中所规定的，如果你不用的话，那这些线程将永远得不到激活，从而导致本示例程序根本无法运行。<br /><br />　　下面我们再来看一下process()方法，第30－40行的循环依次从vector数组中选取SimpleThread线程，并检查它是否处于激活状态（所谓激活状态是指此线程是否正在处理客户端的请求），如果处于激活状态的话，那继续查找vector数组的下一项，如果vector数组中所有的线程都处于激活状态的话，那它会打印出一条信息，提示用户稍候再试。相反如果找到了一个睡眠线程的话，那第35－38行会对此进行处理，它先告诉客户端是哪一个线程来处理这个请求，然后将客户端的请求，即字符串argument转发给SimpleThread类的setArgument()方法进行处理，并调用SimpleThread类的setRunning()方法来唤醒当前线程，来对客户端请求进行处理。<br /><br />　　可能你还对setRunning()方法是怎样唤醒线程的有些不明白，那我们现在就进入最后一个类：SimpleThread类，它的源代码如下：<br /><br />//SimpleThread.java<br />1 class SimpleThread extends Thread<br />2 {<br />3 private boolean runningFlag;<br />4 private String argument;<br />5 public boolean isRunning()<br />6 {<br />7 return runningFlag;<br />8 }<br />9 public synchronized void setRunning(boolean flag)<br />10 {<br />11 runningFlag = flag;<br />12 if(flag)<br />13 this.notify();<br />14 }<br />15<br />16 public String getArgument()<br />17 {<br />18 return this.argument;<br />19 }<br />20 public void setArgument(String string)<br />21 {<br />22 argument = string;<br />23 }<br />24<br />25 public SimpleThread(int threadNumber)<br />26 {<br />27 runningFlag = false;<br />28 System.out.println("thread " + threadNumber + "started.");<br />29 }<br />30<br />31 public synchronized void run()<br />32 {<br />33 try{<br />34 while(true)<br />35 {<br />36 if(!runningFlag)<br />37 {<br />38 this.wait();<br />39 }<br />40 else<br />41 {<br />42 System.out.println("processing " + getArgument() + "... done.");<br />43 sleep(5000);<br />44 System.out.println("Thread is sleeping...");<br />45 setRunning(false);<br />46 }<br />47 }<br />48 } catch(InterruptedException e){<br />49 System.out.println("Interrupt");<br />50 }<br />51 }//end of run()<br />52 }//end of class SimpleThread <br /><br />　　如果你对JAVA的线程编程有些不太明白的话，那我先在这里简单地讲解一下，JAVA有一个名为Thread的类，如果你要创建一个线程，则必须要从Thread类中继承，并且还要实现Thread类的run()接口，要激活一个线程，必须调用它的start()方法，start()方法会自动调用run()接口，因此用户必须在run()接口中写入自己的应用处理逻辑。那么我们怎么来控制线程的睡眠与唤醒呢？其实很简单，JAVA语言为所有的对象都内置了wait()和notify()方法，当一个线程调用wait()方法时，则线程进入睡眠状态，就像停在了当前代码上了，也不会继续执行它以下的代码了，当调用notify()方法时，则会从调用wait()方法的那行代码继续执行以下的代码，这个过程有点像编译器中的断点调试的概念。以本程序为例，第38行调用了wait()方法，则这个线程就像凝固了一样停在了38行上了，如果我们在第13行进行一个notify()调用的话，那线程会从第38行上唤醒，继续从第39行开始执行以下的代码了。<br /><br />　　通过以上的讲述，我们现在就不难理解SimpleThread类了，第9－14行通过设置一个标志runningFlag激活当前线程，第25－29行是SimpleThread类的构造函数，它用来告诉客户端启动的是第几号进程。第31－50行则是我实现的run()接口，它实际上是一个无限循环，在循环中首先判断一下标志runningFlag，如果没有runningFlag为false的话，那线程处理睡眠状态，否则第42－45行会进行真正的处理：先打印用户键入的字符串，然后睡眠5秒钟，为什么要睡眠5秒钟呢？如果你不加上这句代码的话，由于计算机处理速度远远超过你的键盘输入速度，因此你看到的总是第1号线程来处理你的请求，从而达不到演示效果。最后第45行调用setRunning()方法又将线程置于睡眠状态，等待新请求的到来。<br /><br />　　最后还有一点要注意的是，如果你在一个方法中调用了wait()和notify()函数，那你一定要将此方法置为同步的，即synchronized，否则在编译时会报错，并得到一个莫名其妙的消息：“current thread not owner”（当前线程不是拥有者）。<br /><br />　　至此为止，我们完整地实现了一个线程池，当然，这个线程池只是简单地将客户端输入的字符串打印到了屏幕上，而没有做任何处理，对于一个真正的企业级运用，本例还是远远不够的，例如错误处理、线程的动态调整、性能优化、临界区的处理、客户端报文的定义等等都是值得考虑的问题，但本文的目的仅仅只是让你了解线程池的概念以及它的简单实现，如果你想成为这方面的高手，本文是远远不够的，你应该参考一些更多的资料来深入地了解它。<br /></p>
<img src ="http://www.blogjava.net/sybil/aggbug/97847.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sybil/" target="_blank">SYBIL@BLOGJAVA</a> 2007-02-04 12:28 <a href="http://www.blogjava.net/sybil/archive/2007/02/04/97847.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>这就不行了？</title><link>http://www.blogjava.net/sybil/archive/2007/02/02/97577.html</link><dc:creator>SYBIL@BLOGJAVA</dc:creator><author>SYBIL@BLOGJAVA</author><pubDate>Fri, 02 Feb 2007 07:54:00 GMT</pubDate><guid>http://www.blogjava.net/sybil/archive/2007/02/02/97577.html</guid><wfw:comment>http://www.blogjava.net/sybil/comments/97577.html</wfw:comment><comments>http://www.blogjava.net/sybil/archive/2007/02/02/97577.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/sybil/comments/commentRss/97577.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sybil/services/trackbacks/97577.html</trackback:ping><description><![CDATA[
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img id="Codehighlighter1_30_192_Open_Image" onclick="this.style.display='none'; Codehighlighter1_30_192_Open_Text.style.display='none'; Codehighlighter1_30_192_Closed_Image.style.display='inline'; Codehighlighter1_30_192_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
				<img id="Codehighlighter1_30_192_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_30_192_Closed_Text.style.display='none'; Codehighlighter1_30_192_Open_Image.style.display='inline'; Codehighlighter1_30_192_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				<span style="COLOR: #0000ff">for</span>
				<span style="COLOR: #000000"> (</span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> i </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">1</span>
				<span style="COLOR: #000000">; i </span>
				<span style="COLOR: #000000">&lt;=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">10</span>
				<span style="COLOR: #000000">; i</span>
				<span style="COLOR: #000000">++</span>
				<span style="COLOR: #000000">) </span>
				<span id="Codehighlighter1_30_192_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_30_192_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">                int i = 7;</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">            MNPClientThread mnpct </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">new</span>
						<span style="COLOR: #000000"> MNPClientThread(i);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            mnpct.start();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            System.out.println(i);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />        }</span>
				</span>
		</div>
		<br />
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img id="Codehighlighter1_30_60_Open_Image" onclick="this.style.display='none'; Codehighlighter1_30_60_Open_Text.style.display='none'; Codehighlighter1_30_60_Closed_Image.style.display='inline'; Codehighlighter1_30_60_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
				<img id="Codehighlighter1_30_60_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_30_60_Closed_Text.style.display='none'; Codehighlighter1_30_60_Open_Image.style.display='inline'; Codehighlighter1_30_60_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				<span style="COLOR: #0000ff">public</span>
				<span style="COLOR: #000000"> MNPClientThread(</span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> i) </span>
				<span id="Codehighlighter1_30_60_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_30_60_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
						<span style="COLOR: #0000ff">this</span>
						<span style="COLOR: #000000">.count </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> i;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />    }</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img id="Codehighlighter1_85_886_Open_Image" onclick="this.style.display='none'; Codehighlighter1_85_886_Open_Text.style.display='none'; Codehighlighter1_85_886_Closed_Image.style.display='inline'; Codehighlighter1_85_886_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_85_886_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_85_886_Closed_Text.style.display='none'; Codehighlighter1_85_886_Open_Image.style.display='inline'; Codehighlighter1_85_886_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />    </span>
				<span style="COLOR: #0000ff">public</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">void</span>
				<span style="COLOR: #000000"> run() </span>
				<span id="Codehighlighter1_85_886_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_85_886_Open_Text">
						<span style="COLOR: #000000">{<br /><img id="Codehighlighter1_99_813_Open_Image" onclick="this.style.display='none'; Codehighlighter1_99_813_Open_Text.style.display='none'; Codehighlighter1_99_813_Closed_Image.style.display='inline'; Codehighlighter1_99_813_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_99_813_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_99_813_Closed_Text.style.display='none'; Codehighlighter1_99_813_Open_Image.style.display='inline'; Codehighlighter1_99_813_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span>
						<span style="COLOR: #0000ff">try</span>
						<span style="COLOR: #000000"> </span>
						<span id="Codehighlighter1_99_813_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_99_813_Open_Text">
								<span style="COLOR: #000000">{<br /><img id="Codehighlighter1_139_803_Open_Image" onclick="this.style.display='none'; Codehighlighter1_139_803_Open_Text.style.display='none'; Codehighlighter1_139_803_Closed_Image.style.display='inline'; Codehighlighter1_139_803_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_139_803_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_139_803_Closed_Text.style.display='none'; Codehighlighter1_139_803_Open_Image.style.display='inline'; Codehighlighter1_139_803_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            </span>
								<span style="COLOR: #0000ff">for</span>
								<span style="COLOR: #000000">(</span>
								<span style="COLOR: #0000ff">int</span>
								<span style="COLOR: #000000"> i</span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000">1</span>
								<span style="COLOR: #000000">;i</span>
								<span style="COLOR: #000000">&lt;=</span>
								<span style="COLOR: #000000">800000</span>
								<span style="COLOR: #000000">;i</span>
								<span style="COLOR: #000000">++</span>
								<span style="COLOR: #000000">)</span>
								<span id="Codehighlighter1_139_803_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
										<img src="http://www.blogjava.net/images/dot.gif" />
								</span>
								<span id="Codehighlighter1_139_803_Open_Text">
										<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                StringBuffer phoneNumber </span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #0000ff">new</span>
										<span style="COLOR: #000000"> StringBuffer(</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">88600</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                phoneNumber.append(count);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                phoneNumber.append(</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">0000</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                phoneNumber.append(i);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                Thread.sleep(</span>
										<span style="COLOR: #000000">800</span>
										<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span>
										<span style="COLOR: #008000">//</span>
										<span style="COLOR: #008000">                System.out.println("****************"+phoneNumber.toString());</span>
										<span style="COLOR: #008000">
												<br />
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
										</span>
										<span style="COLOR: #000000">                MNPClientTest client </span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #0000ff">new</span>
										<span style="COLOR: #000000"> MNPClientTest();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                client.runTest(phoneNumber.toString());<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span>
										<span style="COLOR: #008000">//</span>
										<span style="COLOR: #008000">            java.util.Date d2 = new java.util.Date();</span>
										<span style="COLOR: #008000">
												<br />
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
										</span>
										<span style="COLOR: #000000">                System.out.println(</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">Thread </span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #000000">+</span>
										<span style="COLOR: #000000"> count </span>
										<span style="COLOR: #000000">+</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000"> Runs</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span>
										<span style="COLOR: #008000">//</span>
										<span style="COLOR: #008000">                System.out.println(new java.util.Date());<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span>
										<span style="COLOR: #008000">//</span>
										<span style="COLOR: #008000">                System.out.println(i);</span>
										<span style="COLOR: #008000">
												<br />
												<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />
										</span>
										<span style="COLOR: #000000">            }</span>
								</span>
								<span style="COLOR: #000000">
										<br />
										<img id="Codehighlighter1_836_880_Open_Image" onclick="this.style.display='none'; Codehighlighter1_836_880_Open_Text.style.display='none'; Codehighlighter1_836_880_Closed_Image.style.display='inline'; Codehighlighter1_836_880_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
										<img id="Codehighlighter1_836_880_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_836_880_Closed_Text.style.display='none'; Codehighlighter1_836_880_Open_Image.style.display='inline'; Codehighlighter1_836_880_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        }</span>
						</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">catch</span>
						<span style="COLOR: #000000"> (Exception ex) </span>
						<span id="Codehighlighter1_836_880_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_836_880_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            ex.printStackTrace();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />    }</span>
				</span>
		</div>
		<br />运行3小时左右，发了不到10Wquery就挂了？？？<br />报这个：<br /><span style="COLOR: #008000; FONT-FAMILY: vt100">Exception in thread "Thread-1" java.lang.OutOfMemoryError: Java heap space<br /><br />我加了-Xms128m -Xmx800m 还是不行？是内存泄露吗？？</span><img src ="http://www.blogjava.net/sybil/aggbug/97577.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sybil/" target="_blank">SYBIL@BLOGJAVA</a> 2007-02-02 15:54 <a href="http://www.blogjava.net/sybil/archive/2007/02/02/97577.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>links read</title><link>http://www.blogjava.net/sybil/archive/2007/01/25/95885.html</link><dc:creator>SYBIL@BLOGJAVA</dc:creator><author>SYBIL@BLOGJAVA</author><pubDate>Thu, 25 Jan 2007 03:59:00 GMT</pubDate><guid>http://www.blogjava.net/sybil/archive/2007/01/25/95885.html</guid><wfw:comment>http://www.blogjava.net/sybil/comments/95885.html</wfw:comment><comments>http://www.blogjava.net/sybil/archive/2007/01/25/95885.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sybil/comments/commentRss/95885.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sybil/services/trackbacks/95885.html</trackback:ping><description><![CDATA[
		<p>
				<font face="Arial" size="2">ENUM:<br /><a href="http://www.ptsn.net.cn/article_new/show_article.php?article_id=expert_9039d306-6d61-d622-14d5-43c49c788fef">http://www.ptsn.net.cn/article_new/show_article.php?article_id=expert_9039d306-6d61-d622-14d5-43c49c788fef</a><br /><br />e164:<br /><a href="http://www.mc21st.net/old/faq/reply.asp?ID=7471">http://www.mc21st.net/old/faq/reply.asp?ID=7471</a><br /><br />IMSI:<br /><a href="http://zhidao.baidu.com/question/7853752.html">http://zhidao.baidu.com/question/7853752.html</a><br /><br /><a href="http://baike.baidu.com/view/715091.htm">http://baike.baidu.com/view/715091.htm</a></font>
		</p>
<img src ="http://www.blogjava.net/sybil/aggbug/95885.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sybil/" target="_blank">SYBIL@BLOGJAVA</a> 2007-01-25 11:59 <a href="http://www.blogjava.net/sybil/archive/2007/01/25/95885.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>……忘了转正这件事了</title><link>http://www.blogjava.net/sybil/archive/2007/01/21/95119.html</link><dc:creator>SYBIL@BLOGJAVA</dc:creator><author>SYBIL@BLOGJAVA</author><pubDate>Sun, 21 Jan 2007 05:08:00 GMT</pubDate><guid>http://www.blogjava.net/sybil/archive/2007/01/21/95119.html</guid><wfw:comment>http://www.blogjava.net/sybil/comments/95119.html</wfw:comment><comments>http://www.blogjava.net/sybil/archive/2007/01/21/95119.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sybil/comments/commentRss/95119.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sybil/services/trackbacks/95119.html</trackback:ping><description><![CDATA[一言难尽<img src ="http://www.blogjava.net/sybil/aggbug/95119.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sybil/" target="_blank">SYBIL@BLOGJAVA</a> 2007-01-21 13:08 <a href="http://www.blogjava.net/sybil/archive/2007/01/21/95119.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第一章	思考题与练习题[原]</title><link>http://www.blogjava.net/sybil/archive/2007/01/12/93510.html</link><dc:creator>SYBIL@BLOGJAVA</dc:creator><author>SYBIL@BLOGJAVA</author><pubDate>Fri, 12 Jan 2007 10:51:00 GMT</pubDate><guid>http://www.blogjava.net/sybil/archive/2007/01/12/93510.html</guid><wfw:comment>http://www.blogjava.net/sybil/comments/93510.html</wfw:comment><comments>http://www.blogjava.net/sybil/archive/2007/01/12/93510.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sybil/comments/commentRss/93510.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sybil/services/trackbacks/93510.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 37.5pt; TEXT-INDENT: -37.5pt; mso-list: l0 level1 lfo1; tab-stops: list 37.5pt">
				<span lang="EN-US" style="mso-bidi-font-family: 宋体">
						<span style="mso-list: Ignore">第一章<span style="FONT: 7pt 'Times New Roman'">    </span></span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">思考题与练习题</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 36.75pt; TEXT-INDENT: -15.75pt; mso-list: l1 level1 lfo2; tab-stops: list 36.75pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">1．</span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">什么是移动通信？能否说移动通信就是“无线电通信”？为什么？</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">移动通信是指通信双方或至少有一方在移动中进行信息交换的通信方式。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">不能，移动通信是有线、无线相结合的通信方式。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 36.75pt; TEXT-INDENT: -15.75pt; mso-list: l1 level1 lfo2; tab-stops: list 36.75pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">2．</span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">移动通信有哪些特点？存在的问题分别用哪些方法解决？</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt; mso-para-margin-left: 2.0gd">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">移动通信是有线、无线相结合的通信方式；电波传播条件恶劣，存在严重的多径衰落；强干扰条件下工作；具有多卜勒效应；存在阴影区（盲区）；用户经常移动。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt; mso-para-margin-left: 2.0gd">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">移动台必须体积要小、重量要轻、操作使用要简便安全，另外，其成本要低；在进行移动通信系统的设计时，必须具有一定的抗衰落的能力和储备；移动通信设备必须具有良好的选择性，使用自动功率控制电路，移动通信系统在组网时，必须考虑同频干扰；锁相技术；考虑阴影区在网络规划、设置基站时；位置登记、越区切换及漫游访问等跟踪交换技术。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 36.75pt; TEXT-INDENT: -15.75pt; mso-list: l1 level1 lfo2; tab-stops: list 36.75pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">3．</span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">移动通信常用的工作方式有哪些？公用蜂窝移动电话系统中使用哪些？</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 36.75pt; TEXT-INDENT: 5.25pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">单工方式，半双工方式，双工方式。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 36.75pt; TEXT-INDENT: 5.25pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">双工。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 36.75pt; TEXT-INDENT: -15.75pt; mso-list: l1 level1 lfo2; tab-stops: list 36.75pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">4．</span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">什么是小区制？为什么小区制既能解决频道数有限和用户数增大的矛盾，又能不断适应用户数增大的需要？</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">小区制是将整个服务区划分为若干个小无线区，每个小无线区分别设置一个基站负责本区的移动通信的联络和控制，同时又可在</span>
				<span lang="EN-US">MSC</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的统一控制下，实现小区间移动通信的转接及与市话网的联系。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">小区制中，每个小区使用一组频道，邻近小区使用不同的频道。由于小区内基站服务区域缩小，同频复用距离减小，所以在整个服务区中，同一组频道可以多次重复使用，因而大大提高了频率利用率。另外，在区域内可根据用户的多少确定小区的大小。随着用户数目的增加，小区还可以继续划小，即实现“小区分裂”，以适应用户数的增加。因此，小区制解决了大区制中存在的频道数有限而用户数不断增加的矛盾，可使用户容量大大增加。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 36.75pt; TEXT-INDENT: -15.75pt; mso-list: l1 level1 lfo2; tab-stops: list 36.75pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">5．</span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">无线区域的划分为什么采用正六边形小区形状？正六边形无线区群构成应满足什么条件？</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">假定整个服务区的地形地物相同，并且基站采用全向天线，覆盖面积大体上上一个圆，即无线小区是圆形的。由考虑到多个小区彼此邻接来覆盖整个区域，用圆内接正多边形代替圆。圆内接正多边形彼此邻接构成平面时，只能是正三角形、正方形和正六边形三种面状区域。正六边形，其相邻小区的中心距离最小，便于实现跟踪交换；其覆盖面积最大，对于同样大小的服务区域，采用正六边形构成小区制所需的小区数最少，即所需基站数最少；所需的频率个数最少，频率利用率高。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">满足以下两个条件：一是若干单位无线区群能彼此邻接；二是相邻单位无线区群中的同频小区中心间隔相等。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 36.75pt; TEXT-INDENT: -15.75pt; mso-list: l1 level1 lfo2; tab-stops: list 36.75pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">6．</span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">什么是多信道共用？有何优点？</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 15.75pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">多信道共用是指在网内的大量用户共同享有若干无线信道，这与市话用户共同享有中继线相类似。相对于独立信道方式来说，可以显著提高信道利用率。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 36.75pt; TEXT-INDENT: -15.75pt; mso-list: l1 level1 lfo2; tab-stops: list 36.75pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">7．</span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">大容量的移动通信系统采用何种信道选择方式？有什么优缺点？</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 36.75pt; TEXT-INDENT: 5.25pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">专用呼叫信道方式。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">处理一次呼叫过程所需的时间很短，所以设立一个专用呼叫信道就可以处理成百上千个用户的呼叫，适用于大容量系统中；由于专门抽出一个信道作呼叫信道，相对而言，减少了通话信道的数目，因此对小容量系统来说，是不合算的。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 36.75pt; TEXT-INDENT: -15.75pt; mso-list: l1 level1 lfo2; tab-stops: list 36.75pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">8．</span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">若需设计一移动通信系统，用户容量要求为</span>
				<span lang="EN-US">600</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">户，每天每个用户平均呼叫</span>
				<span lang="EN-US">5</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">次，每次平均占用信道时间为</span>
				<span lang="EN-US">60</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">秒，呼损率要求为</span>
				<span lang="EN-US">10%</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，忙时击中率为</span>
				<span lang="EN-US">0.125</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，问需要多少信道才能满足</span>
				<span lang="EN-US">600</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">个用户的需要？</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 36.75pt; TEXT-INDENT: 5.25pt">
				<span lang="EN-US">A/A</span>
				<sub>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">用户</span>
				</sub>
				<span lang="EN-US">=600</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 36.75pt; TEXT-INDENT: 5.25pt">
				<span lang="EN-US">A</span>
				<sub>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">用户</span>
				</sub>
				<span lang="EN-US">=CTK/3600=5*60*0.125=37.5/3600</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 36.75pt; TEXT-INDENT: 5.25pt">
				<span lang="EN-US">A=6.25</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 36.75pt; TEXT-INDENT: 5.25pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">查表得：</span>
				<span lang="EN-US">9</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 36.75pt; TEXT-INDENT: -15.75pt; mso-list: l1 level1 lfo2; tab-stops: list 36.75pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">9．</span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">话务量是怎样定义的？什么是呼损率？呼损率与接通话务量的关系如何？</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 36.75pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">单位时间（</span>
				<span lang="EN-US">1</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">小时）内呼叫次数与每次呼叫的平均占用信道时间之积。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">当多个信道共用时，通常总是用户数大于信道数，当多个用户同时要求服务而信道数不够时，只能让一部分用户先通话，另一部分用户等信道空闲时在通话。后一部分用户因无空闲信道而不能通话，即为呼叫失败，简称呼损。在一个通信系统中，造成呼叫失败的概率称为呼叫损失概率，简称呼损率。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 15.75pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">呼损率为呼叫失败的次数与总呼叫次数之百分比。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 36.75pt; TEXT-INDENT: -15.75pt; mso-list: l1 level1 lfo2; tab-stops: list 36.75pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">10．<span style="FONT: 7pt 'Times New Roman'">              </span></span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">爱尔兰呼损表应用的条件是什么？已知</span>
				<span lang="EN-US">A</span>
				<sub>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">用户</span>
				</sub>
				<span lang="EN-US">=0.02Erl/</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">用户，如果要求呼损率为</span>
				<span lang="EN-US">10%</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，现有</span>
				<span lang="EN-US">70</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">个用户，需共用的频道数为多少？如果</span>
				<span lang="EN-US">920</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">个用户共用</span>
				<span lang="EN-US">18</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">个频道，那么呼损率是多少？</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">每次呼叫相对独立，互不相关，即呼叫具有随机性，也就是说，一个用户要求通话的概率与正在通话的用户数无关；每次呼叫在时间上都有相同的概率。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">A/n=70*0.02/n, A=1.4, </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">查表得</span>
				<span lang="EN-US">n=4</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">A/n=920*0.02/n, A=18.4, </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">查表得呼损率为</span>
				<span lang="EN-US">20%</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 36.75pt; TEXT-INDENT: -15.75pt; mso-list: l1 level1 lfo2; tab-stops: list 36.75pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">11．<span style="FONT: 7pt 'Times New Roman'">              </span></span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如何提高频率利用<a name="OLE_LINK1">率</a>？</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 36.75pt; TEXT-INDENT: 5.25pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">频率复用、频率协调和频率规划</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 36.75pt; TEXT-INDENT: -15.75pt; mso-list: l1 level1 lfo2; tab-stops: list 36.75pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">12．<span style="FONT: 7pt 'Times New Roman'">              </span></span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">系统对移动交换机有哪些特殊要求？</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">用户数据的存储；用户位置的登记；寻呼用户的信令系统识别及处理；越区频道转换的处理；过荷控制；远距离档案存取；路由的控制等。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 36.75pt; TEXT-INDENT: -15.75pt; mso-list: l1 level1 lfo2; tab-stops: list 36.75pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">13．<span style="FONT: 7pt 'Times New Roman'">              </span></span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">什么是位置登记、一齐呼叫、越区切换、漫游？</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">位置登记是指移动台向基站发送报文，表明自己所处的位置的过程。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">若位置信息表明被呼移动用户在某个位置区，但不知其所处的具体小区，因此，位置区内所有基站一齐呼出被呼移动用户识别码，被叫移动用户应答后，即由应答小区提供接续服务，系统的这种功能称为“一齐呼叫”。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">为了保证通信的连续性，正在通话的移动台从一个小区进入相邻的另一小区时，工作频道从一个无限频道上转换到另一个无限频道上，而通话不中断，这就是越区切换。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在联网的移动通信系统中，移动台从一个</span>
				<span lang="EN-US">MSC</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">区到另一个</span>
				<span lang="EN-US">MSC</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">区后，仍能入网使用的通信服务功能称为漫游。</span>
		</p>
<img src ="http://www.blogjava.net/sybil/aggbug/93510.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sybil/" target="_blank">SYBIL@BLOGJAVA</a> 2007-01-12 18:51 <a href="http://www.blogjava.net/sybil/archive/2007/01/12/93510.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>junt 4&amp;static import</title><link>http://www.blogjava.net/sybil/archive/2007/01/09/92684.html</link><dc:creator>SYBIL@BLOGJAVA</dc:creator><author>SYBIL@BLOGJAVA</author><pubDate>Tue, 09 Jan 2007 10:02:00 GMT</pubDate><guid>http://www.blogjava.net/sybil/archive/2007/01/09/92684.html</guid><wfw:comment>http://www.blogjava.net/sybil/comments/92684.html</wfw:comment><comments>http://www.blogjava.net/sybil/archive/2007/01/09/92684.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sybil/comments/commentRss/92684.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sybil/services/trackbacks/92684.html</trackback:ping><description><![CDATA[JUnit 4:<br /><a href="http://www.ibm.com/developerworks/cn/java/j-junit4.html">http://www.ibm.com/developerworks/cn/java/j-junit4.html</a><br /><br />逐渐挖掘Static Import<br /><span class="subtitle">更简单的访问静态成员<br /><a href="http://blog.csdn.net/avius/archive/2004/08/27/86744.aspx">http://blog.csdn.net/avius/archive/2004/08/27/86744.aspx</a><br /></span><img src ="http://www.blogjava.net/sybil/aggbug/92684.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sybil/" target="_blank">SYBIL@BLOGJAVA</a> 2007-01-09 18:02 <a href="http://www.blogjava.net/sybil/archive/2007/01/09/92684.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>说说希望……</title><link>http://www.blogjava.net/sybil/archive/2007/01/06/92177.html</link><dc:creator>SYBIL@BLOGJAVA</dc:creator><author>SYBIL@BLOGJAVA</author><pubDate>Sat, 06 Jan 2007 15:54:00 GMT</pubDate><guid>http://www.blogjava.net/sybil/archive/2007/01/06/92177.html</guid><wfw:comment>http://www.blogjava.net/sybil/comments/92177.html</wfw:comment><comments>http://www.blogjava.net/sybil/archive/2007/01/06/92177.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/sybil/comments/commentRss/92177.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sybil/services/trackbacks/92177.html</trackback:ping><description><![CDATA[    《妙手人心3》，廖碧儿和一脑科医生刚刚做医生，看到急症室一病人无论如何也抢救不过来，一阵唏嘘……林保仪走过去，问他们做医生是为了什么？两个小医生说是救死扶伤……林否定，说人的生命不是医生能够掌握的，你们不必耿耿于怀。随后，两人问林，那你为什么要做医生？林答：希望，给病人希望……<br />    另：……这个省略号以前一直不知道是怎么打出来的，刚看韩寒的blog有说，终于学会了！原来他也不会，哈哈……再也不用。。。。。。了<br />    记住了是谢夫特加6哦^^<img src ="http://www.blogjava.net/sybil/aggbug/92177.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sybil/" target="_blank">SYBIL@BLOGJAVA</a> 2007-01-06 23:54 <a href="http://www.blogjava.net/sybil/archive/2007/01/06/92177.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JUnit使用经验(1)(2)(3)</title><link>http://www.blogjava.net/sybil/archive/2007/01/05/92031.html</link><dc:creator>SYBIL@BLOGJAVA</dc:creator><author>SYBIL@BLOGJAVA</author><pubDate>Fri, 05 Jan 2007 09:01:00 GMT</pubDate><guid>http://www.blogjava.net/sybil/archive/2007/01/05/92031.html</guid><wfw:comment>http://www.blogjava.net/sybil/comments/92031.html</wfw:comment><comments>http://www.blogjava.net/sybil/archive/2007/01/05/92031.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/sybil/comments/commentRss/92031.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sybil/services/trackbacks/92031.html</trackback:ping><description><![CDATA[
		<a href="http://www.z6688.com/info/27393-1.htm">http://www.z6688.com/info/27393-1.htm</a>
		<br />
		<br />
		<a href="http://www.z6688.com/info/27394-1.htm">http://www.z6688.com/info/27394-1.htm</a>
		<br />
		<br />
		<a href="http://www.z6688.com/info/27392-1.htm">http://www.z6688.com/info/27392-1.htm</a>
		<br />
		<br />比较有用的是测试执行顺序那锅和不必写捕获异常的那锅。<img src ="http://www.blogjava.net/sybil/aggbug/92031.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sybil/" target="_blank">SYBIL@BLOGJAVA</a> 2007-01-05 17:01 <a href="http://www.blogjava.net/sybil/archive/2007/01/05/92031.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>links read 1.3</title><link>http://www.blogjava.net/sybil/archive/2007/01/03/91625.html</link><dc:creator>SYBIL@BLOGJAVA</dc:creator><author>SYBIL@BLOGJAVA</author><pubDate>Wed, 03 Jan 2007 12:53:00 GMT</pubDate><guid>http://www.blogjava.net/sybil/archive/2007/01/03/91625.html</guid><wfw:comment>http://www.blogjava.net/sybil/comments/91625.html</wfw:comment><comments>http://www.blogjava.net/sybil/archive/2007/01/03/91625.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sybil/comments/commentRss/91625.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sybil/services/trackbacks/91625.html</trackback:ping><description><![CDATA[Ubuntu这个词怎么读？<a href="http://zhidao.baidu.com/question/5236768.html?si=3"><br />http://zhidao.baidu.com/question/5236768.html?si=3</a><img src ="http://www.blogjava.net/sybil/aggbug/91625.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sybil/" target="_blank">SYBIL@BLOGJAVA</a> 2007-01-03 20:53 <a href="http://www.blogjava.net/sybil/archive/2007/01/03/91625.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Blog links</title><link>http://www.blogjava.net/sybil/archive/2006/12/25/89904.html</link><dc:creator>SYBIL@BLOGJAVA</dc:creator><author>SYBIL@BLOGJAVA</author><pubDate>Mon, 25 Dec 2006 06:48:00 GMT</pubDate><guid>http://www.blogjava.net/sybil/archive/2006/12/25/89904.html</guid><wfw:comment>http://www.blogjava.net/sybil/comments/89904.html</wfw:comment><comments>http://www.blogjava.net/sybil/archive/2006/12/25/89904.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sybil/comments/commentRss/89904.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sybil/services/trackbacks/89904.html</trackback:ping><description><![CDATA[什么是3G通信?<a href="http://zhidao.baidu.com/question/14085848.html?si=5"><br />http://zhidao.baidu.com/question/14085848.html?si=5</a><br /><br /><a href="http://zhidao.baidu.com/question/11419446.html?md=3">http://zhidao.baidu.com/question/11419446.html?md=3</a><br /><br /><img src ="http://www.blogjava.net/sybil/aggbug/89904.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sybil/" target="_blank">SYBIL@BLOGJAVA</a> 2006-12-25 14:48 <a href="http://www.blogjava.net/sybil/archive/2006/12/25/89904.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>