Java线程的两种实现形式
2024-10-21 17:28:30
一、创建线程的第一种方式:继承Thread类
class Demo extends Thread{
@Override
public void run() {
super.run();
for(int i=0;i<20;i++)
System.out.println(Thread.currentThread()+"...."+i);
}
} public class ThreadDemo1 {
public static void main(String[] args){
Demo d1 = new Demo();
Demo d2 = new Demo();
d1.start();
d2.start();
}
}
二、创建线程的第二种方式:实现Runnable接口
class Demo2 implements Runnable{
public void run() {
for(int i=0;i<20;i++)
System.out.println(Thread.currentThread()+"..."+i);
}
} public class ThreadDemo2 {
public static void main(String[] args) {
Thread t1 = new Thread(new Demo2());
Thread t2 = new Thread(new Demo2());
t1.start();
t2.start(); }
}
Runnable的出现仅仅是将线程的任务进行了对象的封装。
实现Runnable接口的好处:
1、将线程的任务从线程的子类中分离出来,进行单独的封装。按照面向对象的思想将任务封装成对象。
2、避免了Java单继承的局限性
所以第二种方法创建线程比较常用。
最新文章
- Linux0.11内核--系统调用机制分析
- CallBack实践。
- Caused by: java.lang.NoSuchMethodError: javax.persistence.spi.PersistenceUnitInfo.getValidationMode
- 面试经验(SG)
- Oracle DataGuard 物理Standby 搭建(上)
- 一个提供jsp免费空间的站点
- 优盘文件系统(FOR C)
- 使用Charles Proxy提升iOS开发效率
- 冒泡排序的python代码实现
- [LeetCode] Maximum Vacation Days 最大化休假日
- C++ Primer 有感(重载操作符)
- 【转】Python爬取AES加密的m3u8视频流的小电影并转换成mp4
- c++ 开源库介绍和安装
- [wx]雪落香杉树人物关系图
- 20180307-Xen、KVM、VMware、hyper-v等虚拟化技术的比较
- Tanks!Tutorial 学习
- Pandas DataFrame 数据选取和过滤
- 解决 listView gridView 与ScrollView嵌套时的冲突
- tomcat java变量环境设置
- C#指南,重温基础,展望远方!(9)C#接口