一、程序,进程,线程的区别
程序program,静态的概念,就是代码的集合
进程process,动态的概念,是程序一次动态的执行过程,进程是作为资源分配的单位,每个进程有独立的代码和数据空间,一个操作系统有多个进程
线程thread,进程中的一条执行路径,可以看成轻量级的进程同一类线程共享数据和代码
一个进程可以有多个线程。
多线程,一个进程内有多条执行路径。
java程序默认的线程:main(主线程),gc,异常机制,至少有三个线程。
二、实现多线程的方法
1.继承Thread类,重写run方法,new这个Thread类的子类的对象,调用 对象.start();
一切从run开始,run方法里面叫做线程体,相当于主程序一切从main开始。
代码,三个线程一起跑
package thread;
public class TestRun {
public static void main(String[] args) {
Run rabbit = new Run("Little Rabbit");
Run turtle = new Run("Old Trutle");
rabbit.start();
turtle.start();
for (int i = 0; i < 101; i++) {
System.out.println("main-->" + i);
}
}
}
2.实现Runnable接口
Runnable接口只有一个run方法,重写这个方法。
这里用到了静态代理模式:
所谓静态代理模式就是用代理带代替真身进行活动。
要求代理和真身继承了同样的接口,代理可以代替真身实现接口里的方法;
关于静态代理的代码:
package thread;
public interface Marry {
void marrywedding();
}
package thread;
public class You implements Marry {
private String name;
public You(String name) {
super();
this.name = name;
}
public You() {
}
@Override
public void marrywedding() {
System.out.println(name + "and Jenny married!");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package thread;
public class WeddingCompany implements Marry {
public WeddingCompany(You you) {
super();
this.you = you;
}
You you = new You();
@Override
public void marrywedding() {
System.out.println("布置会场");
you.marrywedding();
System.out.println("打扫战场");
}
}
package thread;
public class TestMarry {
public static void main(String[] args) {
You you = new You("Tom");
WeddingCompany wed = new WeddingCompany(you);
wed.marrywedding();
}
}
讲完代理继续讲实现Runnable接口后如何实现多进程。
(未完待续)
本文详细阐述了程序、进程及线程之间的区别,并介绍了Java中实现多线程的两种方法:继承Thread类与实现Runnable接口。

1903

被折叠的 条评论
为什么被折叠?



