Java多线程引例及实现多线程的方式
2024-08-30 20:16:41
多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。
Java多线程是由JVM来实现,不必关心操作系统的调用问题。
假如我们要实现如下功能:
public class Test {
public static void main(String[] args) {
for(int i=0;i<100;i++){ //和尚念经100遍
System.out.println(i+"南无阿弥陀佛!");
}
for(int i=0;i<100;i++){ //道士讲经100遍
System.out.println(i+"道可道、非常道!");
}
}
}
即和尚念经100遍和道士讲经100遍
传统方式我们只能等待一个人做完了,第二个人才能开始工作。而实际情况他们应该能够同时工作,且各干各的互不干扰。
于是这时我们就要使用多线程技术。
class HeShang extends Thread{ //继承Thread类
public void run(){ //把任务写进run方法里面
for(int i=0;i<100;i++){
System.out.println(i+"南无阿弥陀佛!");
}
}
}
class DaoShi extends Thread{
public void run(){
for(int i=0;i<100;i++){
System.out.println(i+"道可道、非常道!");
}
}
}
public class Demo {
public static void main(String[] args) {
HeShang heShang=new HeShang();
DaoShi daoShi=new DaoShi();
heShang.start();
daoShi.start();
}
}
运行后如图:
刚才我们就实现了多线程
Java中多线程实现方式主要有两种(1)继承Thread类(2)实现Runnable接口
使用Runnable接口实现多线程
class HeShang implements Runnable{
public void run(){
for(int i=0;i<100;i++){
System.out.println(i+"南无阿弥陀佛!");
}
}
}
class DaoShi implements Runnable{
public void run(){
for(int i=0;i<100;i++){
System.out.println(i+"道可道、非常道!");
}
}
}
public class Demo {
public static void main(String[] args) {
HeShang heShang=new HeShang();
DaoShi daoShi=new DaoShi();
//要用Thread来启动线程,代理设计模式
Thread t1=new Thread(heShang); //Thread构造方法可接收Runnable类型,向上转型,自动完成
t1.start();
new Thread(daoShi).start(); //匿名对象
}
}
因为Runnable接口没有run方法,所以实现Runnable接口的类(HeShang or DaoShi)没有start方法,但是Thread是有start方法的。
我们使用代理,首先Thread构造方法可接收Runnable类型
之后用Thread对象启动start方法。
也可以使用匿名对象一行代码完成。
运行后,也能够实现多线程,如图所示:
最新文章
- Canvas 知识体系简单总结
- AngularJS结构简介
- 在Myeclipse中移除项目对Hibernate的支持
- 49. Sort Letters by Case
- 查询Linux系统最后重启时间的三个方法
- les nationalit&#233;s et les pays
- sql tran, c# SqlTransaction , TransactionScope 的用法
- 【Python实践-1】求一元二次方程的两个解
- Luogu5290 十二省联考2019春节十二响(贪心+启发式合并)
- SpringMvc参数传递中乱码问题
- yum-Remi源配置
- 有关java反射机制 小结
- php的explode()和implode()方法
- bzoj1056/1862 [Zjoi2006]GameZ游戏排名系统
- JSON 使用 教程
- Geeks : Kruskal’s Minimum Spanning Tree Algorithm 最小生成树
- Educational Codeforces Round 13 A. Johny Likes Numbers 水题
- printf重定向问题
- android.support.v4.app.Fragment vs android.app.Fragment 的区别
- Bzoj 4524 [Cqoi2016]伪光滑数(堆)