您的位置:首页 > 编程语言 > Java开发

java学习笔记——多线程

2016-03-15 22:45 423 查看
一、程序,进程,线程的区别

程序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接口后如何实现多进程。

(未完待续)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: