欢迎来到天天文库
浏览记录
ID:34417261
大小:49.66 KB
页数:5页
时间:2019-03-05
《java线程:创建与启动1》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Java线程:创建与启动SCJP5学习笔记一、定义线程1、扩展java.lang.Thread类。此类中有个run()方法,应该注意其用法:publicvoidrun()如果该线程是使用独立的Runnable运行对象构造的,则调用该Runnable对象的run方法;否则,该方法不执行任何操作并返回。Thread的子类应该重写该方法。2、实现java.lang.Runnable接口。voidrun()使用实现接口Runnable的对象创建一个线程时,启动该线程将导致在独立执行的线程中调用对象的run方法。方法r
2、un的常规协定是,它可能执行任何所需的操作。二、实例化线程1、如果是扩展java.lang.Thread类的线程,则直接new即可。2、如果是实现了java.lang.Runnable接口的类,则用Thread的构造方法:Thread(Runnabletarget)Thread(Runnabletarget,Stringname)Thread(ThreadGroupgroup,Runnabletarget)Thread(ThreadGroupgroup,Runnabletarget,Stringname)Th
3、read(ThreadGroupgroup,Runnabletarget,Stringname,longstackSize)三、启动线程在线程的Thread对象上调用start()方法,而不是run()或者别的方法。在调用start()方法之前:线程处于新状态中,新状态指有一个Thread对象,但还没有一个真正的线程。在调用start()方法之后:发生了一系列复杂的事情启动新的执行线程(具有新的调用栈);该线程从新状态转移到可运行状态;当该线程获得机会执行时,其目标run()方法将运行。注意:对Java来说,
4、run()方法没有任何特别之处。像main()方法一样,它只是新线程知道调用的方法名称(和签名)。因此,在Runnable上或者Thread上调用run方法是合法的。但并不启动新的线程。四、例子1、实现Runnable接口的多线程例子/***实现Runnable接口的类**@authorleizhimin2008-9-1318:12:10*/publicclassDoSomethingimplementsRunnable{privateStringname;publicDoSomething(Stringna
5、me){this.name=name;}publicvoidrun(){for(inti=0;i<5;i++){for(longk=0;k<100000000;k++);System.out.println(name+":"+i);}}}/***测试Runnable类实现的多线程程序**@authorleizhimin2008-9-1318:15:02*/publicclassTestRunnable{publicstaticvoidmain(String[]args){DoSomethingds1=newD
6、oSomething("阿三");DoSomethingds2=newDoSomething("李四");Threadt1=newThread(ds1);Threadt2=newThread(ds2);t1.start();t2.start();}}执行结果:李四:0阿三:0李四:1阿三:1李四:2李四:3阿三:2李四:4阿三:3阿三:4Processfinishedwithexitcode02、扩展Thread类实现的多线程例子/***测试扩展Thread类实现的多线程程序**@authorleizhimi
7、n2008-9-1318:22:13*/publicclassTestThreadextendsThread{publicTestThread(Stringname){super(name);}publicvoidrun(){for(inti=0;i<5;i++){for(longk=0;k<100000000;k++);System.out.println(this.getName()+":"+i);}}publicstaticvoidmain(String[]args){Threadt1=newTestT
8、hread("阿三");Threadt2=newTestThread("李四");t1.start();t2.start();}}执行结果:阿三:0李四:0阿三:1李四:1阿三:2李四:2阿三:3阿三:4李四:3李四:4Processfinishedwithexitcode0对于上面的多线程程序代码来说,输出的结果是不确定的。其中的一条语句for(longk=0;k<100000000;k++);是
此文档下载收益归作者所有