一.Thread 类的直接使用
//在 new对象的时候 重写覆盖run函数
1.Thread t = new Thread (){public run(){System.out .print ("hello world "); }};
2.Thread t = new Thread (“TT”){public run(){System.out .print ("My name is TT "); }};
//利用Runnable
1.Runnable r =new Runnable(){public run(){System.out .print ("hello world "); }};
Thread t1 = new Thread(r);
Thread t2 = new Thread(r,"name");
2.Thread t1 =new Thread (new Runnable (){public void run(){System.out .print ("hello world ");}});
Thread t2 =new Thread (new Runnable (){public void run(){System.out .print (" my name is TT ");}},“TT”);
二。自定义类的实现方法
1.继承Thread类
public class ThreadTest extends Thread {
// 必须实现 run()函数。且 run函数的必须以这样的语法格式,才能是重写覆盖。
public void run(){}
}
当new 出一个线程的时候, 通过start() 函数启动它, new ThreadTest()。start();可能有illegalThreadStateException
2.将类实现Runnable 接口
因为java不支持多继承,所以另一种实现Thread的方法是继承接口。实际上,Thread 类就是实现了Runnable接口的run() 函数的。
public class ThreadRun extends object implements Runnable {
//实现run函数
String name;
public void run(){}
}
这时候,创建方法有两种,把ThreadRun 按照文章开头的例子,当做Runnable来用就行,
即 Thread t = new Thread (new ThreadRun());
Thread t = new Thread (new ThreadRun(),“ThreadName”);//直接把“ThreadName”赋值给 ThreadRun()的name
三.例子
package ThreadTest;
public class Threada extends Thread {
String name ;
public Threada(String name){
this.name = name ;
}
public void run (){
for (int i =0 ;i<10 ;i++){
System.out.println(name+":"+i);
}
}
public static void main (String args[]){
Threada t1= new Threada("111");
Threada t2= new Threada("222");
Threada t3= new Threada("333");
t1.start();
t2.start();
t3.start();
}
}
结果:
111:0
333:0
222:0
333:1
111:1
111:2
333:2
222:1
333:3
111:3
333:4
333:5
333:6
333:7
222:2
333:8
111:4
333:9
222:3
222:4
111:5
222:5
111:6
222:6
111:7
222:7
111:8
222:8
111:9
222:9
public class Threadb implements Runnable{
String name ;
@Override
public void run() {
// TODO Auto-generated method stub
for (int i =0 ;i<10 ;i++){
System.out.println(Thread.currentThread().getName()+":"+i);
}
}
public static void main (String args[]){
Thread t1 = new Thread(new Threadb(),"11");
Thread t2 = new Thread(new Threadb(),"22");
Thread t3 = new Thread(new Threadb(),"33");
t1.start();
t2.start();
t3.start();
}
}
结果:
22:0
33:0
11:0
33:1
22:1
33:2
11:1
33:3
22:2
33:4
11:2
33:5
22:3
33:6
33:7
33:8
11:3
33:9
22:4
22:5
11:4
22:6
11:5
22:7
11:6
22:8
22:9
11:7
11:8
11:9