会员书架
首页 > 游戏竞技 > Java语言入门 > 第8部分

第8部分(第1/2 页)

目录
最新游戏竞技小说: 末世:我负责囤女神,系统发低保吞噬星空2起源大陆我吃西红柿网游之长生不死海洋求生,开局忽悠女明星做女友求生:魔法灾变世界王者:御姐边路,全网顶不住了!地球数据化后,我在游戏里生活开局一颗定海珠,给我砸!全民领主:开局一座移动城NBA之格斗天赋加满超巨都慌了游戏神豪,我氪金多亿点怎么了?网游:蓝星online开局SSS级天赋,装备全是史诗海岛求生:真千金她为何总是霸榜进入FPS游戏并且火力无限游戏:靠吸收物品来升级的商人全民求生:我的蛇姐超级强规则怪谈:我天生反骨苟到最后开局扮演卡莎,老婆竟是我自己?网游:我的血量有亿点点多

注意:这并没有消灭这个线程,但它停止了线程的执行。并且这个线程不能用t1。start()重新启动。在我们的例子里,我们从来不用显式地停止一个线程。我们只简单地让它执行完而已。很多复杂的线程例子将需要我们控制每一个线程。在这种情况下会使用到stop()函数。如果需要,你可以测试你的线程是否被激活。一个线程已经启动而且没有停止被认为是激活的。t1。isAlive()如果t1是激活的,这个函数将返回true。

7。2。7动画例子

下面是一个包含动画线程的applet例子:

importjava。awt。*;importjava。awt。image。ImageProducer;import

java。applet。Applet;

publicclassatest3extendsAppletimplementsRunnable{Imageimages'';

MediaTrackertracker;intindex=0;Threadanimator;

intmaxWidth;maxHeight;//Ouroff…screenponentsfordoublebuffering。

ImageoffScrImage;GraphicsoffScrGC;

//Canwepaintyes?booleanloaded=false;

//Initializetheapplet。Setoursizeandloadtheimagespublicvoidinit()

'//Setupourimagemonitortracker=newMediaTracker(this);

//SetthesizeandwidthofourappletmaxWidth=100;maxHeight=100;

images=newImage'10';//Setupthedouble…bufferandresizeourapplet

try{offScrImage=createImage(maxWidth;maxHeight);offScrGC=

offScrImage。getGraphics();offScrGC。setColor(Color。lightGray);

offScrGC。fillRect(0;0;maxWidth;maxHeight);

resize(maxWidth;maxHeight);}catch(Exceptione)

{e。printStackTrace();}

//loadtheanimationimagesintoanarrayfor(inti=0;i=images。length){index=0;}}

//Delayheresoanimationlooksnormaltry{animator。sleep(200);}catch

(InterruptedExceptione){}//Drawthenextframerepaint();}}}

7。3多线程间的通讯

7。3。1生产者和消费者

多线程的一个重要特点是它们?reg;间可以互相通讯。你可以设计线程使用公用对象,每个线程都可以独立操作公用对象。典型的线程间通讯建立在生产者和消费者模型上:一个线程产生输出;另一个线程使用输入buffer

让我们创建一个简单的”AlphabetSoup”生产者和相应的消费者。

7。3。2生产者

生产者将从thread类里派生:classProducerextendsThread

{privateSoupsoup;privateStringalphabet=”

ABCDEFGHIJKLMNOPQRSTUVWXYZ”;

publicProducer(Soups){//Keepourowncopyofthesharedobjectsoup

=s;}

目录
笛落雨潇潇童话后遗症柳家七娘子重生之世家大小姐九印梵天完美主义魔法师 2
返回顶部