/** * 进程和线程的区别: * 进程 每个进程都有独立的代码和数据空间, * 进程间的切换会有较大的开销,一个进程包含1-n个线程。 * 每个应用程序就是一个进程。 * 线程 同一类线程共享代码和数据空间, * 每个线程有独立的运行栈和程序计数器,线程切换开销小。 * * 线程和进程一样分为五个阶段:创建、就绪、运行、阻塞、终止, * 多进程是指操作系统能同时运行多个任务(程序), * 多线程是指在同一程序中有多个顺序流在执行。 * * 每个线程都会独立的开辟一个栈空间 * Thread中有一个可以开辟一个新的线程方法:start(); * * 实现多线程的第一种方法: * 1.继承于java.lang.Thread; * 2.重写run方法; * 实现多线程的第二种方法: * 1.写一个类实现java.lang.Runnable接口 * 2.实现run方法 * * 推荐使用第二种方法: * 好处: * 1.保留了类的继承权 * 2.适合多个相同的程序代码去处理同一个资源 * 3.增加程序的健壮性,代码可以被多个线程共享。代码和数据独立 */
/** * 实现多线程的第一种方法: * 1.继承于java.lang.Thread; * 2.重写run方法; */ public class ThreadTest { public static void main(String[] args) { Thread01 t1=new Thread01(); t1.start();//开辟一个新的线程 for (int i = 0; i < 100; i++) { System.out.println("主线程----"+i); } } } class Thread01 extends Thread{ public void run() { for (int i = 0; i < 100; i++) { System.out.println("我的线程++++"+i); } } }
/** * 实现多线程的第二种方法: * 1.写一个类实现java.lang.Runnable接口 * 2.实现run方法 */ public class RunnableTest { public static void main(String[] args) { Runnable01 rb = new Runnable01(); Thread td = new Thread(rb);//添加一个Runnable的对象,通过Thread来实现新线程 td.start(); for (int i = 0; i < 100; i++) { System.out.println("主线程----"+i); } } } class Runnable01 implements Runnable { public void run() { for (int i = 0; i < 100; i++) { System.out.println("我的线程++++"+i); } } }