以下是我的理解,看代码:
class MyThread1 extends Thread
{
public void run()
{
//线程运行代码
}
}
class MyThread2 implements Runnable
{
public void run()
{
//线程运行代码
}
}
class MyThreadDemo
{
public static void main(String[] args)
{
//采用继承Thread的方式创建线程 //线程是怎么创建和运行的
MyThread1 mt1 = new MyThread1(); //new一个Thread才是创建一个线程,因为run方法定义在Thread类中
//调用run方法线程才会运行,当然在这之前你得先开启它。
mt1.start(); //虽然调用了两次start方法,但是只new了一个MyThread对象,而MyThread是Thread的子类。
mt1.start(); //实际上也就是只调用了一次run方法中的功能,这里只能跑一个线程。
MyThread1 mt1 = new MyThread(); //new了4个MyThread对象,每个对象都是Thread的子类,也就是创建了4个线程。
MyThread2 mt2 = new MyThread(); //每个MyThread对象都分别复写了Thread类的run方法,只是复写的内容一样。
MyThread3 mt3 = new MyThread(); //每个对象分别调用了自己的start方法,这里可以跑4个线程。
MyThread4 mt4 = new MyThread();
mt1.start();
mt2.start();
mt3.start();
mt4.start();
//采用实现Runnable接口的方式创建线程
MyThread2 mt2 = new MyThread2(); //这个不多说,虽然只创建了一个MyThread对象,
Thread t1 = new Thread(mt2);
Thread t2 = new Thread(mt2); //但是new了4个Thread对象,而每个Thread对象都分别接收了mt2,
Thread t3 = new Thread(mt2); //这里4个线程也能跑起来
Thread t4 = new Thread(mt2);
t1.start();
t2.start();
t3.start();
t4.start(); }
}
|