下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/在Java中创建线程有两种方法:使用Thread类和使用Runnable接口。在使用Runnable接口时需要建立一个Thread实例。因此,无论是通过Thread类还是Runnable接口建立线程,都必须建立Thread类或它的子类的实例。Thread类的构造方法被重载了八次,构造方法如下:
public
Thread(
);
public
Thread(Runnable
target);
public
Thread(String
name);
public
Thread(Runnable
target,
String
name);
public
Thread(ThreadGroup
group,
Runnable
target);
public
Thread(ThreadGroup
group,
String
name);
public
Thread(ThreadGroup
group,
Runnable
target,
String
name);
public
Thread(ThreadGroup
group,
Runnable
target,
String
name,
long
stackSize);
Runnable
target实现了Runnable接口的类的实例。要注意的是Thread类也实现了Runnable接口,因此,从Thread类继承的类的实例也可以作为target传入这个构造方法。Stringname线程的名子。这个名子可以在建立Thread实例后通过Thread类的setName方法设置。如果不设置线程的名子,线程就使用默认的线程名:Thread-N,N是线程建立的顺序,是一个不重复的正整数。资料个人收集整理,勿做商业用途ThreadGroupgroup当前建立的线程所属的线程组。如果不指定线程组,所有的线程都被加到一个默认的线程组中。关于线程组的细节将在后面的章节详细讨论。资料个人收集整理,勿做商业用途longstackSize线程栈的大小,这个值一般是CPU页面的整数倍。如x86的页面大小是4KB.在x86平台下,默认的线程栈大小是12KB.资料个人收集整理,勿做商业用途一个普通的Java类只要从Thread类继承,就可以成为一个线程类。并可通过Thread类的start方法来执行线程代码。虽然Thread类的子类可以直接实例化,但在子类中必须要覆盖Thread类的run方法才能真正运行线程的代码。下面的代码给出了一个使用Thread类建立线程的例子:资料个人收集整理,勿做商业用途
001
package
mythread;
002
003
public
class
Thread1
extends
Thread
004
{
005
public
void
run()
006
{
007
System.out.println(this.getName());
008
}
009
public
static
void
main(String[]
args)
010
{
011
System.out.println(Thread.currentThread().getName());
012
Thread1
thread1
=
new
Thread1();
013
Thread1
thread2
=
new
Thread1
();
014
thread1.start();
015
thread2.start();
016
}
017
}上面的代码建立了两个线程:thread1和thread2.上述代码中的005至008行是Thread1类的run方法。当在014和015行调用start方法时,系统会自动调用run方法。在007行使用this.getName()输出了当前线程的名字,由于在建立线程时并未指定线程名,因此,所输出的线程名是系统的默认值,也就是Thread-n的形式。在011行输出了主线程的线程名。资料个人收集整理,勿做商业用途上面代码的运行结果如下:
main
Thread-0
Thread-1从上面的输出结果可以看出,第一行输出的main是主线程的名子。后面的Thread-1和Thread-2分别是thread1和thread2的输出结果。资料个人收集整理,勿做商业用途注意:任何一个Java程序都必须有一个主线程。一般这个主线程的名子为main.只有在程序中建立另外的线程,才能算是真正的多线程程序。也就是说,多线程程序必须拥有一个以上的线程。资料个人收集整理,勿做商业用途Thread类有一个重载构造方法可以设置线程名。除了使用构造方法在建立线程时设置线程名,还可以使用Thread类的setName方法修改线程名。要想通过Thread类的构造方法来设置线程名,必须在Thread的子类中使用Thread类的publicThread(Stringname)构造方法,因此,必须在Thread的子类中也添加一个用于传入线程名的构造方法。下面的代码给出了一个设置线程名的例子:资料个人收集整理,勿做商业用途
001
package
mythread;
002
003
public
class
Thread2
extends
Thread
004
{
005
private
String
who;
006
007
public
void
run()
008
{
009
System.out.println(who
+
":"
+
this.getName());
010
}
011
public
Thread2(String
who)
012
{
013
super();
014
this.who
=
who;
015
}
016
public
Thread2(String
who,
String
name)
017
{
018
super(name);
019
this.who
=
who;
020
}
021
public
static
void
main(String[]
args)
022
{
023
Thread2
thread1
=
new
Thread2
("thread1",
"MyThread1");
024
Thread2
thread2
=
new
Thread2
("thread2");
025
Thread2
thread3
=
new
Thread2
("thread3");
026
thread2.setName("MyThread2");
027
thread1.start();
028
thread2.start();
029
thread3.start();
030
}
031在类中有两个构造方法:第011行:publicsample2_2(Stringwho)这个构造方法有一个参数:who.这个参数用来标识当前建立的线程。在这个构造方法中仍然调用Thread的默认构造方法publicThread()。资料个人收集整理,勿做商业用途第016行:publicsample2_2(Stringwho,Stringname)这个构造方法中的who和第一个构造方法的who的含义一样,而name参数就是线程的名名。在这个构造方法中调用了Thread类的publicThread(Stringname)构造方法,也就是第018行的super(name)。资料个人收集整理,勿做商业用途在main方法中建立了三个线程:thread1、thread2和thread3.其中thread1通过构造方法来设置线程名,thread2通过setName方法来修改线程名,thread3未设置线程名。资料个人收集整理,勿做商业用途运行结果如下:
thread1:MyThread1
thread2:MyThread2
thread3:Thread-2从上面的输出结果可以看出,thread1和thread2的线程名都已经修改了,而thread3的线程名仍然为默认值:Thread-2.thread3的线程名之所以不是Thread-1,而是Thread-2,这是因为在024行建立thread2时已经将Thread-1占用了,因此,在025行建立thread3时就将thread3的线程名设为Thread-2.然后在026行又将thread2的线程名修改为MyThread2.因此就会得到上面的输出结果。资料个人收集整理,勿做商业用途注意:在调用start方法前后都可以使用setName设置线程名,但在调用start方法后使用setName修改线程名
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年湖南益阳市沅江市机关事业单位招才60人高频500题难、易错点模拟试题附带答案详解
- 2024年湖南湘西州泸溪县教育事业单位招聘工作人员20人高频500题难、易错点模拟试题附带答案详解
- 2024年湖南涟源市审计局招聘政府投资审计临时专业人员1人高频500题难、易错点模拟试题附带答案详解
- 2024年湖南永州市蓝山县事业单位招聘与聘用历年高频500题难、易错点模拟试题附带答案详解
- 2024年湖南株洲醴陵市引进事业单位高层次专业技术人才31人高频500题难、易错点模拟试题附带答案详解
- 2024年湖南怀化辰溪县医疗卫生事业单位招聘100人历年高频500题难、易错点模拟试题附带答案详解
- 2024年湖南常德澧县事业单位招聘历年高频500题难、易错点模拟试题附带答案详解
- 2024年湖南娄底市市直事业单位集中招聘29人历年高频500题难、易错点模拟试题附带答案详解
- 2024年湖北黄石西塞山区机关事业单位招聘26人历年高频500题难、易错点模拟试题附带答案详解
- 2024年湖北随州曾都区事业单位招聘不可历年高频500题难、易错点模拟试题附带答案详解
- 急性心肌梗死个案护理
- 湘教版八年级上册初二数学全册单元测试卷(含期中期末试卷)
- 第二章公路路线
- 餐饮(火锅)员工手册
- 商业秘密泄露案例与法律责任借鉴
- 肺性脑病的查房
- 客车设备-风挡和车端阻尼装置(车辆构造检修课件)
- 源代码管理规范
- 中国加速康复外科围手术期管理专家共识专家讲座
- 深圳实验学校新初一均衡分班语文试卷
- 2023年《临床输血技术规范》
评论
0/150
提交评论