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接口后如何实现多进程。
(未完待续)
程序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 ConcurrentHashMap 源码分析(2)
- Eclipse Maven Project
- Spring中AOP基于Annotation的零配置(2)
- windows下配置java环境变量
- Java中implements和extends的小记
- Eclipse将android项目打包jar文件
- Eclipse常用快捷键汇总(转)
- Java面向对象01-对象和类
- Java基础之自动装箱拆箱
- [疯狂Java]AWT拖放操作:拖放源
- 深入理解JVM(2)—Java虚拟机内存区域
- java web的文件上传
- Java遇见HTML——JSP篇之JavaBeans
- java类的实现
- struts2中三种参数传递问题
- Java数组之数组的类型
- java设计模式之静态代理与动态代理
- struts2通配符
- Java接口回调机制
- Java 设计原则简述