java创建线程的方法有两种:
- 实现Runnable接口
- 继承Thread类;
- 继承Thread类创建进程的步骤:
1.创建一个类继承自Thread;
2.覆写Thread类的run()方法;
3.使用new Thread(String name)方法创建一个子线程;其中String 参数为可选参数表示自定义线程的名字; 4调用Thread对象的start()方法,启动线程,执行run方法中的语句;
例子:
class Demo extends Thread{
Demo(String name){
}
@Override
public void run() {
for(int i = 0;i < 10; i++)
System.out.println("name: " + Thread.currentThread().getName() + " i :" + i);
}
}
public class ThreadDemo1 {
public static void main(String[] args) {
Demo d1 = new Demo("zhang");
Demo d2 = new Demo("wang");
d1.start();
d2.start();
System.out.println("name: " + Thread.currentThread().getName());
}
}
- 实现Runnable接口创建线程步骤:
1.定义类实现Runnable方法;
2.实现Runnable接口中的抽象方法run(),将线程的认为代码封装入方法中;
3.在主线程中创建Thread对象,并把Runnable实现类作为参数传递; Thread(Runnable runnable ,String name);String同样为线程名称。
4.调用Thread类的start方法,启动线程,运行Runnable接口中的run方法内的代码。
例子
public class ThreadDemo1 {
public static void main(String[] args) {
// Demo d1 = new Demo("zhang");
// Demo d2 = new Demo("wang");
//
// d1.start();
// d2.start();
Demo d = new Demo();
Thread t1 = new Thread(d,"zhang");
Thread t2 = new Thread(d,"wang");
t1.start();
t2.start();
}
}
class Demo implements Runnable{
@Override
public void run() {
for(int i = 0;i < 10; i++)
System.out.println("name: " + Thread.currentThread().getName() + " i :" + i);
}
}
- 使用Runnable接口的创建线程的好处:
1.将线程任务从线程中抽取出来,符合面向对象的设计思想;
2.避免了java单继承的局限性;
所以我们一般采用使用第二种方法创建线程。