进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程!线程总是属于某个线程,进程中的线程共享进程的内存

    注意:对Java来说,run()方法没有任何特别之处。像main()方法一样,它只是新线程知道调用的方法名称(和签名)。因此,在Runnable上或者Thread上调用run方法是合法的。但并不启动新的线程,启动新的线程要调用start()方法

    在Java中提供了两种方式实现线程:1、继承Thread类 

package unit_fifteen;

public class TestThread extends Thread {
    private String name;

    public TestThread(String name) {
        this.name = name;
    }

    @Override
    public void run() {
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 2; j++) {
                System.out.println(name + ":" + i);
            }
        }
    }
    //继承Thread类
    public static void main(String[] args) {
        //可以创建没有命名的线程
        TestThread tone = new TestThread("阿三");
        TestThread ttwo = new TestThread("李四");
        tone.start();
        ttwo.start();
    }

}  

    2、实现Runnable接口

package unit_fifteen;

public class TestRunnnable implements Runnable {

    public static void main(String[] args) {
        //实现Runnable接口,可以创建没有命名的线程
        TestRunnnable dsone = new TestRunnnable("阿三");
        TestRunnnable dstwo = new TestRunnnable("李四");
        //以实现了Runnable接口的类的对象作为参数创建Thread对象
        Thread tone = new Thread(dsone);
        Thread ttwo = new Thread(dstwo);
        tone.start();
        ttwo.start();
    }

    private String name;

    public TestRunnnable(String name) {
        this.name = name;
    }

    @Override
    public void run() {
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 2; j++) {
                System.out.println(name + ":" + i);
            }
        }
    }

}