java学习笔记——多线程

本文详细阐述了程序、进程及线程之间的区别,并介绍了Java中实现多线程的两种方法:继承Thread类与实现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接口后如何实现多进程。

(未完待续)



评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值