/**
* 进程和线程的区别:
* 进程 每个进程都有独立的代码和数据空间,
* 进程间的切换会有较大的开销,一个进程包含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);
}
}
}