多线程的创建一:继承于Thread类
- 1,创建一个继承于Thread类的子类
- 2,重写Thread类的run()
- 3,创建Thread类的子类对象
- 4,通过此类对象调用start()
Thread类的常用方法:
void start();启动线程,并执行对象run()方法
run();线程在被调度的时候使用
String getName();返回线程的名称
void setName(String name);设置该线程的名称
static Thread currentThread();返回当前线程。在Thread子类中就是this,通常用于主线程和Runnable实现类
static void yleld();线程让步
join();当某个程序执行流中中调用其他线程的join()方法时,调用线程将被阻塞,知道
join()方法加入的join线程执行完毕为止。
在线程a中调用线程b中的join(),线程a就进入阻塞状态,直到线程b完全执行完以后,线程a才结束阻塞状态。
static void sleep(long millis);(指定时间:毫秒)让线程休眠,一段时间内放弃对cpu的控制。
要注意:一个继承于Thread的子类对象只能start()一次!
public class TestThread {
public static void main(String[] args){
MyThread mt=new MyThread();
mt.start();
for(int i=0;i<100;i++){
System.out.println("多线程0");
}
}
}
class MyThread extends Thread{
@Override
public void run() {
for(int i=0;i<100;i++){
System.out.println("多线程1");
}
}
}
如果我们run方法只调用一次的话,可以考虑用匿名子类的形式:
new MyThread(){
@Override
public void run() {
for(int i=0;i<100;i++){
System.out.println("多线程1");
}
}
}.start();
其实我们更多情况是使用匿名子类的方式调用run方法。