java线程创建与启动1

java线程创建与启动1

ID:34550845

大小:49.00 KB

页数:5页

时间:2019-03-07

java线程创建与启动1_第1页
java线程创建与启动1_第2页
java线程创建与启动1_第3页
java线程创建与启动1_第4页
java线程创建与启动1_第5页
资源描述:

《java线程创建与启动1》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Java线程:创建与启动SCJP5学习笔记一、定义线程1、扩展java.lang.Thread类。此类中有个run()方法,应该注意其用法:publicvoidrun()如果该线程是使用独立的Runnable运行对象构造的,则调用该Runnable对象的run方法;否则,该方法不执行任何操作并返回。Thread的子类应该重写该方法。2、实现java.lang.Runnable接口。voidrun()使用实现接口Runnable的对象创建一个线程时,启动该线程将导致在独立执行的线程中调用对象的run方法。方法run的常规协定是,它可能执行任何所需

2、的操作。二、实例化线程1、如果是扩展java.lang.Thread类的线程,则直接new即可。2、如果是实现了java.lang.Runnable接口的类,则用Thread的构造方法:Thread(Runnabletarget)Thread(Runnabletarget,Stringname)Thread(ThreadGroupgroup,Runnabletarget)Thread(ThreadGroupgroup,Runnabletarget,Stringname)Thread(ThreadGroupgroup,Runnabletarget

3、,Stringname,longstackSize)三、启动线程在线程的Thread对象上调用start()方法,而不是run()或者别的方法。在调用start()方法之前:线程处于新状态中,新状态指有一个Thread对象,但还没有一个真正的线程。在调用start()方法之后:发生了一系列复杂的事情启动新的执行线程(具有新的调用栈);该线程从新状态转移到可运行状态;当该线程获得机会执行时,其目标run()方法将运行。注意:对Java来说,run()方法没有任何特别之处。像main()方法一样,它只是新线程知道调用的方法名称(和签名)。因此,在R

4、unnable上或者Thread上调用run方法是合法的。但并不启动新的线程。四、例子1、实现Runnable接口的多线程例子/***实现Runnable接口的类**@authorleizhimin2008-9-1318:12:10*/publicclassDoSomethingimplementsRunnable{privateStringname;publicDoSomething(Stringname){this.name=name;}publicvoidrun(){for(inti=0;i<5;i++){for(longk=0;k<10

5、0000000;k++);System.out.println(name+":"+i);}}}/***测试Runnable类实现的多线程程序**@authorleizhimin2008-9-1318:15:02*/publicclassTestRunnable{publicstaticvoidmain(String[]args){DoSomethingds1=newDoSomething("阿三");DoSomethingds2=newDoSomething("李四");Threadt1=newThread(ds1);Threadt2=newT

6、hread(ds2);t1.start();t2.start();}}执行结果:李四:0阿三:0李四:1阿三:1李四:2李四:3阿三:2李四:4阿三:3阿三:4Processfinishedwithexitcode02、扩展Thread类实现的多线程例子/***测试扩展Thread类实现的多线程程序**@authorleizhimin2008-9-1318:22:13*/publicclassTestThreadextendsThread{publicTestThread(Stringname){super(name);}publicvoidr

7、un(){for(inti=0;i<5;i++){for(longk=0;k<100000000;k++);System.out.println(this.getName()+":"+i);}}publicstaticvoidmain(String[]args){Threadt1=newTestThread("阿三");Threadt2=newTestThread("李四");t1.start();t2.start();}}执行结果:阿三:0李四:0阿三:1李四:1阿三:2李四:2阿三:3阿三:4李四:3李四:4Processfinishedw

8、ithexitcode0对于上面的多线程程序代码来说,输出的结果是不确定的。其中的一条语句for(longk=0;k<100000000;k++);是

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。