不卡AV在线|网页在线观看无码高清|亚洲国产亚洲国产|国产伦精品一区二区三区免费视频

學(xué)習(xí)啦>論文大全>論文寫作指導(dǎo)>

論文中的頁碼怎么設(shè)置頁碼

時(shí)間: 家文952 分享

  論文反映出作者能夠準(zhǔn)確地掌握所學(xué)的專業(yè)基礎(chǔ)知識,那論文中的頁碼怎么設(shè)置頁碼呢?下面小編給大家分享一些論文中的頁碼怎么設(shè)置頁碼的方法,大家快來跟小編一起欣賞吧。

  論文中的頁碼怎么設(shè)置頁碼

  一、 在菜單欄選擇插入,進(jìn)入頁腳選項(xiàng),在彈出的窗口點(diǎn)擊編輯頁腳

  二、接著在菜單欄會(huì)出現(xiàn)設(shè)計(jì)這一選項(xiàng),點(diǎn)擊頁碼,在彈出的窗口選擇頁面底端,然后出現(xiàn)底端各種樣式,一般選擇居中的頁碼也就是選擇普通數(shù)字2

  三、點(diǎn)擊普通數(shù)字2選項(xiàng)

  四、有時(shí)我們的畢業(yè)論文需要用到其他的頁碼,而非普通的阿拉伯?dāng)?shù)字,這時(shí)就需要在頁碼選項(xiàng)點(diǎn)擊設(shè)置頁碼格式選項(xiàng)

  五、在頁碼格式窗口,選擇編號格式,起始頁碼,點(diǎn)擊確定.

  六、最后在頁腳就出現(xiàn)數(shù)字

  關(guān)于java的論文范文

  Java多線程技術(shù)

  摘要:本文首先介紹了線程的有關(guān)概念, 接著介紹了線程的生命期及其狀態(tài)間的轉(zhuǎn)換, 多線程的調(diào)度原則, 線程的死鎖, 詳細(xì)闡述了多線程的兩種實(shí)現(xiàn)方法:由Thread類派生子類;實(shí)現(xiàn)Runnable接口。

  關(guān)鍵詞:Java語言; 進(jìn)程; 多線程;線程調(diào)度;死鎖

  中圖分類號:TP312JA 文獻(xiàn)標(biāo)識碼:A

  1 引言

  多線程編程是Java語言的一個(gè)重要特色,Java對創(chuàng)建多線程程序提供了廣泛的支持,Java的多線程是一個(gè)類或程序執(zhí)行和管理多個(gè)線程的能力,每個(gè)執(zhí)行線程可獨(dú)立執(zhí)行其他線程或與其他線程同步執(zhí)行。Java的多線程機(jī)制能夠很方便地創(chuàng)建和運(yùn)行多個(gè)獨(dú)立的線程的程序,并且可以創(chuàng)建多個(gè)同步線程,實(shí)現(xiàn)多個(gè)任務(wù)的同步執(zhí)行,這一機(jī)制對于實(shí)現(xiàn)資源共享、防止“死鎖”現(xiàn)象的出現(xiàn)極為有用。多線程的程序能更好地表達(dá)和解決具體問題,是計(jì)算機(jī)應(yīng)用開發(fā)和程序?qū)崿F(xiàn)的發(fā)展趨勢。

  2 Java語言的線程

  2.1線程相關(guān)的概念

  程序是解決某一問題的代碼系列,是一段靜態(tài)的代碼。進(jìn)程是一個(gè)動(dòng)態(tài)的概念,它是程序的一次動(dòng)態(tài)執(zhí)行過程,對應(yīng)代碼從加載、運(yùn)行開始到運(yùn)行完畢的一個(gè)完整的過程,這個(gè)過程是進(jìn)程從產(chǎn)生、發(fā)展到消亡的過程。線程又稱為“輕量進(jìn)程”,是進(jìn)程中一個(gè)順序的執(zhí)行流,一個(gè)進(jìn)程在其執(zhí)行的過程中,可以形成多個(gè)執(zhí)行線索,每個(gè)執(zhí)行線索就是一個(gè)線程。線程也是一個(gè)動(dòng)態(tài)的概念,它對應(yīng)一個(gè)程序段的一次動(dòng)態(tài)的執(zhí)行過程。一個(gè)進(jìn)程中可以包含一個(gè)或多個(gè)線程,線程是比進(jìn)程更小的單元。

  多線程指的是在一個(gè)程序中可以同時(shí)運(yùn)行多個(gè)不同的線程,即一個(gè)程序中包含有多個(gè)執(zhí)行流,借以執(zhí)行不同的任務(wù)。

  雖然線程與進(jìn)程都是順序執(zhí)行的指令序列,但它們之間是有區(qū)別的。一方面,進(jìn)程是一個(gè)實(shí)體,每個(gè)進(jìn)程都有自己獨(dú)立的狀態(tài),并有自己的專用數(shù)據(jù)段;創(chuàng)建進(jìn)程時(shí),必須建立和復(fù)制其專用數(shù)據(jù)段。而線程則相互共享數(shù)據(jù)段,同一程序中的所有線程只有一個(gè)數(shù)據(jù)段,以避免進(jìn)行無謂的數(shù)據(jù)復(fù)制,因此線程的建立和線程間的切換速度大大優(yōu)于進(jìn)程。另一方面,線程又具備進(jìn)程的大多數(shù)優(yōu)點(diǎn)。但是,由于多個(gè)線程共享一個(gè)數(shù)據(jù)段,所以,也出現(xiàn)了數(shù)據(jù)訪問過程的互斥和同步問題,使得系統(tǒng)管理功能變得相對復(fù)雜。

  將進(jìn)程劃分成多個(gè)線程,目的是為了實(shí)現(xiàn)并行程序設(shè)計(jì),在同一地址空間中執(zhí)行多個(gè)控制流,減少并行執(zhí)行時(shí)進(jìn)程間切換的系統(tǒng)開銷,因此可以大大提高應(yīng)用程序的執(zhí)行效率。

  2.2線程的生命期與狀態(tài)轉(zhuǎn)換

  線程同進(jìn)程一樣,是一個(gè)動(dòng)態(tài)的概念,所以線程同進(jìn)程一樣,也有一個(gè)從產(chǎn)生到消亡的生命周期,在其生命周期中,程序可以對線程進(jìn)行各種控制操作。一個(gè)新建的線程的生命期中有如下5種狀態(tài)。

  (1)新建態(tài)(Newborn)

  當(dāng)線程用new運(yùn)算符創(chuàng)建但還未執(zhí)行的這段時(shí)間里,它處于新建狀態(tài)中,此時(shí),線程對象已被分配了相應(yīng)的內(nèi)存空間并被初始化。

  創(chuàng)建線程的語句可以表示如下:Threaadt1=newThread( );

  (2)就緒狀態(tài)或可運(yùn)行狀態(tài)(Runnable)

  當(dāng)新建的線程調(diào)用start( )啟動(dòng)方法后,就會(huì)由新建態(tài)進(jìn)入可運(yùn)行態(tài)??蛇\(yùn)行態(tài)的線程進(jìn)入線程隊(duì)列排隊(duì)等待CPU資源,隨時(shí)可以被調(diào)度執(zhí)行。至于可運(yùn)行態(tài)的線程何時(shí)才被真正執(zhí)行,則取決于線程的優(yōu)先級和排隊(duì)隊(duì)列的當(dāng)前狀況。

  使線程對象t1由新建態(tài)進(jìn)入可運(yùn)行態(tài)的語句可以表示如下:

  t1.start( );

  (3)運(yùn)行態(tài)(Running)

  當(dāng)可運(yùn)行的線程被CPU調(diào)度后,就進(jìn)入運(yùn)行態(tài),運(yùn)行態(tài)表明線程正在運(yùn)行,即線程對象正在調(diào)用本對象的run( )方法。

  (4)掛起態(tài)(Blocked)

  一個(gè)正在運(yùn)行的線程遇到某些特殊情況時(shí),將會(huì)進(jìn)入掛起態(tài)。如果一個(gè)線程處于掛起狀態(tài),這個(gè)線程暫時(shí)無法進(jìn)入排隊(duì)隊(duì)列。

  (5)消亡態(tài)(Dead)

  表示線程已退出運(yùn)行狀態(tài),不再具有繼續(xù)運(yùn)行的能力。線程消亡的原因有兩種: 一是線程正常運(yùn)行終止, 即調(diào)用完run( )方法自然消亡: 二是非正常消亡, 例如執(zhí)行了stop( )方法或destory()方法。

  2.3線程的優(yōu)先級與調(diào)度

  Java 提供一個(gè)線程調(diào)度器來監(jiān)控啟動(dòng)后進(jìn)入就緒狀態(tài)的所有線程。線程調(diào)度器根據(jù)線程的優(yōu)先級決定調(diào)度線程的先后順序,優(yōu)先級高的線程先調(diào)度,優(yōu)先級低的線程后調(diào)度。同時(shí),線程的調(diào)度又是搶先式的,如果在當(dāng)前線程的執(zhí)行過程中,一個(gè)具有更高優(yōu)先級的線程進(jìn)入就緒狀態(tài),則這個(gè)高優(yōu)先級的線程將立即被調(diào)度執(zhí)行。

  線程的優(yōu)先級的范圍是1~10,Thread類用3個(gè)常量來表示線程的優(yōu)先級,分別為:Thread.MIN_PRIORITY, 優(yōu)先級為1,Thread.MAX_PRIORITY, 優(yōu)先級為10,Thread.NORM_PRIORITY, 即為缺省優(yōu)先級5,通過setPriority( )方法可以改變線程的優(yōu)先級。

  3 Java多線程的實(shí)現(xiàn)

  在Java中,多線程的實(shí)現(xiàn)方式有兩種:可以由線程Thread類派生子類,由子類生成的對象來實(shí)現(xiàn)多線程;也可以直接定義一個(gè)線程類來實(shí)現(xiàn)Runnable接口,由該線程類生成對象來實(shí)現(xiàn)多線程。下面分別介紹兩種方法實(shí)現(xiàn)多線程的過程。

  3.1由Thread類派生子類

  Thread是一個(gè)具體的類,它封裝了線程的所有行為。Thread類負(fù)責(zé)向其他類提供線程的最主要的功能,為了向一個(gè)類增加線程功能,可以由Thread類派生一個(gè)子類并同時(shí)覆蓋run( )方法。run( )方法是是線程執(zhí)行的起點(diǎn),可以通過定義run( )方法來為線程提供代碼。

  下面的程序由Thread類來構(gòu)造多線程。

  classThreadExample

  {public static void main(String args[])

  {subThreadt1=newsubThread(“thread1”);//創(chuàng)建線程對象

  subThreadt2=newsubThread(“thread2”);

  t1.start( ); //啟動(dòng)線程

  t2.start( );

  try{ Thread.currentThread( ).sleep(500); //當(dāng)前線程睡眠500毫秒

  }

  catch(InterruptedExceptione)

  {System.out.println(Thread.currentThread( ) +“線程睡眠500毫秒”); }

  }

  }

  classsubThreadextends Thread

  {public voidrun( )

  {for(int j=0;j<3;j++)

  System.out.println(Thread.currentThread( )+“運(yùn)行”+j+“次”);

  try{Thread.currentThread( ).sleep((int)(Math.random()*300);

  //當(dāng)前線程睡眠時(shí)間為隨機(jī)數(shù)。

  }catch(InterruptedExceptione)

  { System.out.println(“線程睡眠時(shí)間在0~300毫秒間!”); }

  }

  }

  該例中通過兩個(gè)線程睡眠,從而讓兩個(gè)線程交互運(yùn)行。

  3.2實(shí)現(xiàn)Runnable接口

  實(shí)現(xiàn)Runnable接口是在程序中使用線程的另一種方法。在某些情況下,一個(gè)類已經(jīng)擴(kuò)展了Frame或Applet, 因而這樣的類不能再繼承Thread類。Runnable接口為一個(gè)類提供了一種無須擴(kuò)展Thread類就可以執(zhí)行一個(gè)新的線程的方法。這種創(chuàng)建線程的方法更具靈活性,也使用戶線程能夠具有其他的一些類的特征。

  Runnable接口是定義在java.lang包中的一個(gè)接口,其聲明如下:

  publicinterfacejava.lang.Runnable

  {public abstract void run( );}

  下面的程序由實(shí)現(xiàn)Runnable接口來構(gòu)造多線程。

  publicclassThreadExample2implementsRunnable

  { ThreadExample2 ( )//構(gòu)造方法

  {Threadt1=Thread.currentThread( ); //創(chuàng)建線程t1

  t1.setName(“The first main thread”);

  t1.start( ); //啟動(dòng)線程t1

  System.out.println(“The running thread:”+Thread1 );

  Threadt2=new Thread(this,“the second thread”); //創(chuàng)建線程t2

  System.out.println(“creat another thread”);

  t2.start();////啟動(dòng)線程t2

  }

  public void run( )

  {try{

  for(int i=0;i<4;i++)

  {

  System.out.println(“Sleep time for thread:”+i);

  Thread.sleep(800);

  }

  }

  catch(InterruptedExceptione)

  {System.out.println(“thread has wrong”); }

  }

  publicstaticvoidmain(Stringargs[ ])

  {newThreadExample2 ( ); }

  }

  3.3 實(shí)現(xiàn)多線程兩種方法的比較

  Thread類最重要的方法是run(),該方法被Thread類的start( )啟動(dòng)方法所調(diào)用。要繼承Thread類,就得覆蓋方法run(),在run( )方法體中加入線程所要執(zhí)行的代碼。缺點(diǎn)是如果一個(gè)類繼承了其他類,如Frame類或Applet類,就無法再繼承Thread類,這種情況下必須再創(chuàng)建新類。

  Runnable接口中聲明了一個(gè)抽象方法run( ),某一個(gè)自定義類實(shí)現(xiàn)Runnable接口,就是在該類的類體中,將用戶線程代碼寫入run()方法的方法體。Runnable接口本身不支持線程,但可通過創(chuàng)建Thread類的對象來實(shí)現(xiàn)。使用Runnable接口來實(shí)現(xiàn)多線程能在一個(gè)類中包含所有的代碼,利于封裝,缺點(diǎn)是只能使用一套代碼,若要?jiǎng)?chuàng)建多個(gè)不同的線程代碼并執(zhí)行,仍需另外創(chuàng)建類。

  4 實(shí)現(xiàn)多線程時(shí)避免死鎖

  由于系統(tǒng)資源有限,程序中的多個(gè)程序互相等待對方資源,而在得到對方資源前不會(huì)釋放自己的資源,造成都想得到資源而又都得不到資源,從而導(dǎo)致線程不能繼續(xù)執(zhí)行,這就是死鎖問題。例如,一個(gè)線程持有對象A,另一個(gè)線程持有對象B,第一個(gè)線程在持有對象A,但必須擁有第二個(gè)線程所持有的對象B才能執(zhí)行;同樣,第二個(gè)線程在持有對象B,但必須擁有第一個(gè)線程所持有的對象A才能執(zhí)行,這兩個(gè)線程就會(huì)無限期地阻塞,這時(shí),線程的死鎖就發(fā)生了。

  線程的死鎖很少發(fā)生,但一旦發(fā)生就很難調(diào)試。應(yīng)盡量避免死鎖的發(fā)生。

  為了防止死鎖現(xiàn)象的發(fā)生,在多線程程序設(shè)計(jì)時(shí)可遵循如下原則:

  (1)盡量少采用多線程來進(jìn)行程序設(shè)計(jì)

  (2)在對象的同步方法中調(diào)用其它的同步方法要小心

  (3)在synchronized封裝的塊中的執(zhí)行時(shí)間盡可能地短,需要長時(shí)間運(yùn)行的任務(wù)盡量不要放在synchronized封裝的同步塊中。

  5 結(jié)束語

  多線程在計(jì)算機(jī)應(yīng)用中具有非常積極的意義和廣闊的應(yīng)用前景。利用Java的多線程特性可方便地編寫高效率、安全的多線程應(yīng)用程序。多線程編程增強(qiáng)了程序的交互性,降低了編寫復(fù)雜任務(wù)處理程序的難度,改善了多處理器的性能并增大了數(shù)據(jù)的吞吐量。當(dāng)然Java在實(shí)現(xiàn)多線程時(shí)也有缺點(diǎn):如對線程的管理會(huì)增加CPU的額外負(fù)擔(dān)等。

  參考文獻(xiàn)

  [1]耿祥義等.Java2實(shí)用教程[M].北京:清華大學(xué)出版社,2004.

  [2]趙海廷等.Java語言程序設(shè)計(jì)[M].武漢:武漢大學(xué)出版社,2005.

  [3]朱福喜等.Java語言與面向?qū)ο蟪绦蛟O(shè)計(jì)[M].武漢:武漢大學(xué)出版社,2000.

  
看了“論文中的頁碼怎么設(shè)置頁碼_怎么設(shè)置論文中的頁碼”的人還看:

1.論文的頁碼怎樣設(shè)置

2.畢業(yè)論文的頁碼如何設(shè)置頁碼

3.畢業(yè)論文怎么設(shè)置頁碼呢

4.畢業(yè)論文的頁碼怎么設(shè)置頁碼

5.論文怎么從正文開始設(shè)置頁碼

2576126