Java多线程机制示例Word下载.docx

上传人:b****6 文档编号:19464805 上传时间:2023-01-06 格式:DOCX 页数:41 大小:24.52KB
下载 相关 举报
Java多线程机制示例Word下载.docx_第1页
第1页 / 共41页
Java多线程机制示例Word下载.docx_第2页
第2页 / 共41页
Java多线程机制示例Word下载.docx_第3页
第3页 / 共41页
Java多线程机制示例Word下载.docx_第4页
第4页 / 共41页
Java多线程机制示例Word下载.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

Java多线程机制示例Word下载.docx

《Java多线程机制示例Word下载.docx》由会员分享,可在线阅读,更多相关《Java多线程机制示例Word下载.docx(41页珍藏版)》请在冰豆网上搜索。

Java多线程机制示例Word下载.docx

publicstaticvoidsleep(longmillis,intnanos)throwsInterruptedException

publicfinalvoidsuspend();

publicfinalvoidresume();

publicfinalsynchronizedvoidjoin(longmillis)throwsInterruptedException;

publicfinalsynchronizedvoidjoin(longmillis,intnanos)throwsInterruptedException;

publicfinalvoidjoin()throwsInterruptedException;

publicvoidinterrupt();

publicstaticbooleaninterrupted();

publicbooleanisInterrupted();

publicvoiddestroy();

publicfinalnativebooleanisAlive();

publicfinalvoidsetPriority(intnewPriority);

publicfinalintgetPriority();

publicfinalvoidsetName(Stringname);

publicfinalStringgetName();

publicfinalThreadGroupgetThreadGroup();

publicstaticnativeThreadcurrentThread();

publicstaticintactiveCount();

publicstaticintenumerate(Threadtarray[]);

publicnativeintcountStackFrames();

publicstaticvoiddumpStack();

publicfinalvoidsetDaemon(booleanon);

publicfinalbooleanisDaemon();

publicvoidcheckAccess();

publicStringtoString();

}

____________________________________________________________

1.2多线程实现方法

例1:

下面程序演示如何用生成Thread子类的方法来创建新线程。

//ThreadTest1.java

publicclassThreadTest1

ThreadTest1()

{

FirstThreadfirst=newFirstThread();

SecondThreadsecond=newSecondThread();

first.start();

second.start();

}

publicstaticvoidmain(String[]args)

newThreadTest1();

classFirstThreadextendsThread

publicvoidrun()

try

System.out.println("

Firstthreadstartsrunning."

);

for(inti=0;

i<

10;

i++)

{

First"

+i);

sleep(1000);

Firstthreadfinishesrunning."

}

catch(InterruptedExceptione){}

}

classSecondThreadextendsThread

\tSecondthreadstartsrunning."

\tSecond"

\tSecondthreadfinishesrunning."

程序设计了两个线程FirstThread类和SecondThread类,它们都是Thread类的子类覆盖了run()方法,在其中分别进行打印数值的工作。

除了这两个线程外,还有一个线程在执行,就是启动类线程,称它为主线程,它负责生成另外两个线程,再用start()方法启动这两个线程。

线程first和second启动后,并发执行。

观察执行结果会发现两个线程交替打印数据,而不是一个线程完成了所有打印工作后,另一个线程才开始打印工作,这就是多线程的本质。

提示:

线程在调用Thread类方法sleep()睡眠时,有可能产生异常,要求应用程序用try-catch捕获这个异常,如果不用try-catch,程序将出错。

某次的运行结果:

Firstthreadfinishesrunning.

First0

Secondthreadstartsrunning.

Second0

Second1

First1

First2

Second2

First3

Second3

First4

Second4

Second5

First5

First6

Second6

First7

Second7

First8

Second8

First9

Second9

Secondthreadfinishes

 

________________________________________________

例2:

//ThreadTest2.java

publicclassThreadTest2

{

ThreadTest2()

first.join();

Waitingforfirstthreadtofinish..."

Wakingupsecondthread..."

second.resume();

catch(InterruptedExceptione){}

newThreadTest2();

FirstthreadSTARTSrunning."

FirstthreadFINISHESrunning."

\tSecondthreadSTARTSrunning."

if(i==4)

suspend();

\tSecondthreadFINISHESrunning."

程序仍然使用两个线程打印数据,不同的是second线程在打印数据过程中,发现是数值4,则调用suspend()方法,暂停本身的执行。

主线程用join()方法等线程first执行结束后,用resume()方法来唤醒second线程,second线程被唤醒后,将继续完成打印工作。

join()也将出现InterruptedException异常,所以必须捕获异常。

FirstthreadSTARTSrunning.

SecondthreadSTARTSrunning.

FirstthreadFINISHESrunning.

Waitingforfirstthreadtofinish...

Wakingupsecondthread...

SecondFINISHESfinishes

例3:

下面的程序说明如何用接口来创建线程。

//RunTest.java

publicclassRunTest

RunTest()

Threadthread1=newThread(first);

Threadthread2=newThread(second);

thread1.start();

thread2.start();

newRunTest();

classFirstThreadimplementsRunnable

Thread.sleep(1000);

classSecondThreadimplementsRunnable

这个程序与ThreadTest1.java有相同的功能,只不过现在用实现Runnable接口的方法来创建和执行线程。

______________________________________________

_____________________________________________

2输入输出流类

2.1文件系统

1.文件路径和属性

例子:

下面的程序首先判断给定文件是否存在,如果存在则显示文件路径、绝对路径等,然后再查询文件的属性。

//FileTest1.java

importjava.io.*;

classFileTest1

Stringpath;

if(args.length!

=1)

System.err.println("

Usage:

javaFileTest1FileorDir"

System.exit(-1);

Filef=newFile(args[0]);

if(f.exists())

-----------------------------"

AbsolutePath:

"

+f.getAbsolutePath());

FilePath:

+f.getPath());

FileName:

+f.getName());

ParentDirtory:

+f.getParent());

StringcanRead=f.canRead()?

Yes"

:

No"

;

StringcanWrite=f.canWrite()?

StringisFile=f.isFile()?

StringisDir=f.isDirectory()?

StringisAbs=f.isAbsolute()?

Readable:

+canRead);

Writable:

+canWrite);

Isdirectoty:

+isDir);

Isfile:

+isFile);

Isabsolutepath:

+isAbs);

elseSystem.out.println("

Cannotfoundfile:

+args[0]);

这是一个Application程序,用命令行参数接受输入文件名。

读者可以用不同的命令行参数来执行上面的程序,体会上述方法的区别。

运行:

javaFileTest1d:

\java\filetest1

运行结果:

-----------------------------

d:

\java\filetest1

filetest1

\java

-----------------------------

Yes

Yes

No

Yes

—————

javaFileTest1\java\filetest1

\java\filetest1

\java

No

javaFileTest1\java\filetest1\filetest1.java

\java\filetest1\filetest1.java

\java\filetest1\filetest1.java

filetest1.java

javaFileTest1\java

java

\

\

null

————————————————————————————

2.创建目录和删除文件

例2:

//FileTest2.java

classFileTest2

Filedir,subdir;

javaFileTest2<

newDirPath>

"

dir=newFile(args[0]);

if(dir.exists())

System.out.println(dir.getPath()+"

alreadyexist!

else

if(dir.mkdirs())//说明区别

Createddirectory:

+dir.getAbsolutePath

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 金融投资

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1