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操作匿名内部类的一些基础操作,如有错误还请各位批评指正

觉得还不错的可以点赞收藏一下,我会不定期更新文章,喜欢我的也可以关注我哦

thead java_Java中多线程的使用(超级超级详细) Thead类的使用 3相关推荐

  1. 在电脑上安装python的步骤-python中pygame安装过程(超级详细)

    安装时是需要设置python环境变量的,下载python的时候底下有个小框框(没有默认选中) Add Python 3.7 to PATH需要选择的,如果没有选择的话,需要自己设置,我一般比较懒,卸载 ...

  2. catia中sew的用法_CATIA超级副本(PowerCopy)使用方法总结 | 坐倚北风

    超级副本(PowerCopy)是CATIA的一个极具特色的功能,在设计中超级副本可用作固化特征的提取,经过分组以用于不同上下文的特征(几何元素.公式.约束等).在CATIA中超级副本还提供了在重复使用 ...

  3. 禁用删除键退回历史记录_如何在Windows 8中删除或禁用搜索超级按钮历史记录

    禁用删除键退回历史记录 When you use the Search Charm in Windows 8 it remembers everything you search for, which ...

  4. 怎么在html中加入相对链接,html直接跳转超链接 html中怎么实现同一页面超级链接...

    html按钮button怎么加超链接 把放在a标签里,直接把链接放到标签里. 扩展资料 HTML 标签提示和注释 html 超链接如何设置点击跳转到根目录或其他目录 超链接跳转到其他的目录或者根目录一 ...

  5. putty 串口暂停_win7系统中使用putty串口设置超级终端的方法

    我们在win7系统的使用中,有很多的小伙伴想要知道我们在win7系统电脑中使用putty串口的方法,putty串口是我们在设置我们电脑的设置超级终端的时候使用到的,很多的小伙伴还不会putty串口的使 ...

  6. VScode中配置 C/C++ 环境,超级详细,问题分析全面,绝对好用

    VScode中配置 C/C++ 环境,超级详细,问题分析全面,绝对好用 VScode中配置 C/C++ 环境 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页.如果你想学习如何使用Ma ...

  7. 超级链接代码,html中的a标签,超链详细用法

    超级链接代码,html中的a标签,超链详细用法 随着互联网的发展,网站的兴起,超链接随处可见.我们使用电脑或手机上网,能够穿梭在各个网页之间,都是通过超链接实现的.超链接就像通向另一个" 世 ...

  8. java线程future_Java中多线程对运行结果怎么利用future获取

    Java中多线程对运行结果怎么利用future获取 发布时间:2020-12-07 17:11:08 来源:亿速云 阅读:124 作者:Leah Java中多线程对运行结果怎么利用future获取?针 ...

  9. Liunx实现超级签名详细攻略(一)超级签名简介

    本文将从零开始详细讲解在Liunx中完全自动化实现超级签名流程. iOS超级签名: 主要目的: 把开发的APP不通过App Store安装到用户手机中. 优点: 不用上架App Store,稳定不掉签 ...

最新文章

  1. sql server行级锁,排它锁,共享锁的使用
  2. 库函数strlen源码重现及注意问题
  3. 基于 Asio 的 C++ 网络编程
  4. 10、MySQL存储引擎有哪些?
  5. Android入门第十五篇之ActivityGroup + GridView 实现Tab分页标签
  6. 2015-03-17 current note creation logic in my task
  7. 实现商城类APP的筛选项效果
  8. python 读取邮件内容_利用Python imaplib和email模块 读取邮件文本内容及附件内容...
  9. 基于springboot+vue的大学生健康档案管理系统
  10. 数字信号处理实验感想matlab,数字信号处理MATLAB实验报告 4.doc
  11. java遍历map集合传值,Java之五种遍历Map集合的方式
  12. eXtremeComponents介绍
  13. ajax请求报415错误解决方案
  14. Win32_SoundDevice 声卡 的参数说明
  15. Node如何去除短视频水印?
  16. 记录---Rosalind之problemsSolutions__0002
  17. C# List集合快速拼接字符串
  18. STM32L+BC20+MQTT连接阿里云传输温湿度数据并控制继电器
  19. 企业员工入职培训怎么做?培训内容分享
  20. ps2摇杆android图形编程,ROC-RK3308-CC开发实例总结--PS2 Joystick摇杆模块

热门文章

  1. Python基础学习(1)
  2. 这才是IT方案商的“新人设”
  3. vs2019的下载及安装教程
  4. Intel oneAPI学习笔记之环境变量配置运行一个PyTorch程序
  5. HDFS写文件过程分析
  6. el-tooltip配合el-button禁用时显示提示
  7. 华为计算机产业线线部门,华为服务器产品线升级为智能计算业务部
  8. DevOps核心实践--持续交付
  9. matlab画第一布里渊区,计算做图画出石墨烯蜂窝格子的倒格子和第一布里渊区用matlab画.PDF...
  10. html设置div滚动条实现超简单