多线程两种最常用的例子
1.Thread 方法的子类
package cc; class myThread extends Thread { private String title ; public myThread(String title){ this.title = title ; } public void run(){ for(int x = 0 ; x < 202; x++){ String sub = this.title.substring(0,3) ; System.out.println(sub); } } } public class Demo { public static void main(String[] args) { myThread m1 = new myThread("m1m1m1m1") ; myThread m2 = new myThread("m2m2m2m2") ; m1.start() ; m2.start() ; } }
为什么要用start() ?
在Thread类的start的方法里面有一个异常抛出
- Throws:
IllegalThreadStateException
- if the thread was already started.
在start()方法里面要调用一个start0() 方法,这个方法使用了(JNI )技术,他调用了本机操作系统的函数。
2使用Runnable 接口实现多线程
如果自己的类已经extends另一个类,就无法直接extends Thread,此时,必须实现一个Runnable接口,如下:
package cc; class A{ } class myThread extends A implements Runnable{ private String title ; public myThread(String title){ this.title = title ; } public void run(){ for(int x = 0 ; x < 202; x++){ String sub = this.title.substring(0,3) ; System.out.println(sub); } } } public class Demo { public static void main(String[] args) { myThread m1 = new myThread("m1m1m1m1") ; Thread thread = new Thread (m1) ; myThread m2 = new myThread("m2m2m2m2") ; Thread thread2 = new Thread(m2) ; thread.start(); thread2.start(); } }
先实现一个接口,然后实例化一个Thread类,然后将时间的接口传入这个实例化的Thread类中。