Java中多线程的使用(超级超级详细) Thead类的使用 3
Java中多线程的使用(超级超级详细) Thead类的使用 3
下面我们先来介绍一些基本方法
构造方法
public Thread() :分配一个新的线程对象。 public Thread(String name) :分配一个指定名字的新的线程对象。 public Thread(Runnable target) :分配一个带有指定目标新的线程对象。 public Thread(Runnable target,String name) :分配一个带有指定目标新的线程对象并指定名字。 常用方法 public String getName() :获取当前线程名称。 public void start() :导致此线程开始执行; Java虚拟机调用此线程的run方法。 public void run() :此线程要执行的任务在此处定义代码。 public static void sleep(long millis) :使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行)。 public static Thread currentThread() :返回对当前正在执行的线程对象的引用
创建线程的方式有两种 一种是继承Thead类的方式,一种是实现Runable接口的方式,下面我们来逐一讲解
继承Thead类的方式
//继承Thread接口
public class MyThread extends java.lang.Thread{
public MyThread(String name) {
super(name);
}
//覆写run方法
@Override
public void run() {
int i=20;
for (int i1 = 0; i1 < i; i1++) {
System.out.println("辅线程"+i1);
}
}
}
创建线程的方式二
使用Runable接口来实现 怎么使用Runable接口 1.定义一个类继承Runable接口,并实现其run()方法; 2.创建Runable对象,并以该对象作为Thread的target来创建Thread对象,该Thread对象才是真正的线程对象 3.调用Thread的start()来启动该线程 下面使用一段代码来演示
package Rubable;
public class RunableImp implements Runnable {
@Override
public void run() {
int i=20;
for (int i1 = i; i1 > 0; i1--) {
System.out.println("Runable接口:"+i1);
}
}
}
package Rubable;
public class Main {
public static void main(String[] args) {
RunableImp runableImp = new RunableImp();
Thread r = new Thread(runableImp);
r.start();
int i=20;
for (int i1 = i; i1 > 0; i1--) {
System.out.println("主线程:"+i1);
}
}
}
可以看到实现Runable接口,只是使该类具有了多线程的特征,run()方法使多线程程序的一个执行目标所有多线程的代码都在run()方法里面,Thread其实也是实现了Runable接口的类 所有的多线程代码都是通过Thread的start方法来运行的,所以,不管是继承Thread还是实现runable接口来实现多线程,最终都是通过Thread的对象的APIA来控制线程 即Runalbe对象仅仅是作为Thread对象的target,Runable实现类里包含的run()方法仅作为线程的执行体,而实际的对象依然是Thread实例,只是线程负责执行其target的run方
使用Runable类的好处
1.避免了类单继承的局限性 2.增加了程序的健壮性,实现解耦操作,代码可以被多个线程共享,代码与线程独立 3.线程池中只可以放入Runable或Callable类线程,不能放入继承Thread的类 小细节: java在一次运行中至少会启动两个线程,一个main线程一个垃圾收集线程,java命令在执行一个类的时候,实际都会启动一个jvm,每一个jvm其实就是在操作系统中启动了一个进程
扯点匿名内部类的操作
有没有一点一气呵成的感觉
package Rubable;
public class Main {
public static void main(String[] args) {
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("这是匿名内部类输出的!!!");
}
}).start();
}
}
结果
以上就是java操作匿名内部类的一些基础操作,如有错误还请各位批评指正 觉得还不错的可以点赞收藏一下,我会不定期更新文章,喜欢我的也可以关注我哦
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Python结巴分词,字符串余弦相似度算法实现关键词筛选及整理
- git的分支远程连接和远程分支的拉取推送及冲突处理
- requests session的应用,python金点设计奖数据爬虫
- 站长工具关键词挖掘采集,Python关键词批量挖掘采集工具
- python百度关键词相关搜索词采集,链轮查询采集exe工具
- Python最火爬虫框架Scrapy入门与实践,豆瓣电影 Top 250 数据采集
- Python爬虫三种解析方式,Pyhton360搜索排名查询
- Python关键词百度指数采集,抓包Cookie及json数据处理
- 常用的package.json,还有这么多你不知道的骚技巧
- 【词库】Python关键词筛选分类,Levenshtein编辑距离算法分词
- 爬取数据缺失的补坑,Python数据爬取的坑坑洼洼如何铲平
- 如何开发跨框架的组件
- SpringBoot系列之异步任务@Async使用教程
- 深入k8s:k8s部署&在k8s中运行第一个程序
- Java是如何实现Future模式的?万字详解!