一.currentThread()方法

currentThread方法就是返回当前被调用的线程。

该方法为一个本地方法,原码如下:

/*** Returns a reference to the currently executing thread object.

*

*@returnthe currently executing thread.*/

public static native Thread currentThread();

可以看出他返回的是一个线程对象。

下面来看一个列子:

public class CurrentThreadText extendsThread{publicCurrentThreadText(){

System.out.println("构造器被"+Thread.currentThread().getName()+"线程调用了");

}

@Overridepublic voidrun(){

System.out.println("run方法被"+Thread.currentThread().getName()+"线程调用了");

}public static voidmain(String[] args) {

System.out.println("main方法被"+Thread.currentThread().getName()+"线程调用了");

CurrentThreadText cu=newCurrentThreadText();

cu.start();

}

}

结果如下:

除了run方法是在一个被自动取名为Thread-0的线程中其他的两个都在main方法中。

但是我们不使用start方法来启动线程,我们直接调用run方法会怎么样呢?

代码如下:

public static voidmain(String[] args) {

System.out.println("main方法被"+Thread.currentThread().getName()+"线程调用了");

CurrentThreadText cu=newCurrentThreadText();

cu.run();//我直接调用了run方法

}

结果:

结果都是被main这个线程调用了,所以说想要启动多线程,就必须使用start方法而不是run方法。run方法就是和单线程一样按着顺序来调用,都在一个main线程中。

二.isAlive()方法

isAlive()方法人如其名意思就是“死没死啊?”,判断线程是否处于活跃状态

列子如下:

public class IsAliveText extendsThread{

@Overridepublic voidrun(){

System.out.print("调用run这个方法的线程为"+this.getName());if(this.isAlive()){

System.out.println("这个线程是活跃的");

}else{

System.out.println("这个线程是不活跃的");

}

}public static voidmain(String[] args) {

IsAliveText is=newIsAliveText();

System.out.printf(String.format("开始时当前线程为%s,%s", is.getName(),is.isAlive()?("活跃"):("不活跃")));

System.out.println();

is.start();

System.out.printf(String.format("结束时当前线程为%s,%s", is.getName(),is.isAlive()?("活跃"):("不活跃")));

System.out.println();

}

}

结果如下:

三.sleep()方法

sleep(n)方法是指让某个线程睡眠n个毫秒,比如

public classThreadSleepText {public static void main(String[] args) throwsException {

System.out.println("当前线程为"+Thread.currentThread().getName());

Thread.sleep(5000);

System.out.println("结束");

}

}

程序会在5秒后结束。

四.getID()方法

过得线程的唯一标识

java多线程常用方法_Java多线程入门中几个常用的方法相关推荐

  1. java hashmap 常用方法_Java的HashMap中的常用方法总结

    HashMap在编程中是一个非常有用的工具,使用的频率很高,所以本文简单总结一下hashmap的常用方法 遍历HashMap 可以通过entryset取得iter,然后逐个遍历 Iterator it ...

  2. show java使用教程_java卡片布局中show的正确使用方法

    创建了四个按钮,分别执行上一页.下一页及两个直接跳转指定页.previous和next都没问题,但是show却始终无效,求高手帮忙看下代码.importjava.awt.*;importjava.aw ...

  3. java当中有关循环的代码_有关Java循环的内容,编程中还是比较常用的,下面分享给大家几个循环的示例代码,练习一下。1、循环输出1到100之间所有能被3或能被4整除的数。pack...

    有关Java循环的内容,编程中还是比较常用的,下面分享给大家几个循环的示例代码,练习一下. 1.循环输出1到100之间所有能被3或能被4整除的数. package com.hz.loop02; /** ...

  4. R中两种常用并行方法——2. snowfall

    上一篇博客(R中两种常用并行方法--1. parallel)中已经介绍了R中常见的一种并行包:parallel,其有着简单便捷等优势,其实缺点也是非常明显,就是很不稳定.很多时候我们将大量的计算任务挂 ...

  5. Python中random模块常用函数/方法(2)——random.random(),random.randint()和random.uniform()

    1.random.random():生成一个0到1的随机符点数: 0 <= n < 1.0 语法:random.random() #生成一个0~1之间的随机浮点数 print(" ...

  6. java线程钥匙_Java多线程并发编程/锁的理解

    一.前言 最近项目遇到多线程并发的情景(并发抢单&恢复库存并行),代码在正常情况下运行没有什么问题,在高并发压测下会出现:库存超发/总库存与sku库存对不上等各种问题. 在运用了 限流/加锁等 ...

  7. java线程 教程_Java多线程系列教程

    Java多线程系列教程 多线程是Java中不可避免的一个重要主体.从本章开始,我们将展开对多线程的学习.接下来的内容是对Java多线程内容的讲解,涉及到的内容包括,Object类中的wait(), n ...

  8. java 转账 锁_Java多线程 多个人转账发生死锁

    Java多线程 多个人转账发生死锁 Java多线程 多个人转账发生死锁 文章目录多个人转账发生死锁 多个人转账发生死锁 人数多的时候, 依然会发生死锁, 遵循墨菲定律. 虽然人多的时候发生死锁的几率不 ...

  9. java 多线程 总结_Java 多线程总结

    昨天熬了个通宵,看了一晚上的视频,把java 的多线程相关技术重新复习了一遍,下面对学习过程中遇到的知识点进行下总结. 首先我们先来了解一下进程.线程.并发执行的概念: 进程是指:一个内存中运行的应用 ...

最新文章

  1. android 的中文意思
  2. linux fedora自定义终端terminal的快捷键
  3. [转载]Windowsnbsp;Servernbsp;2008nbsp;R2nbsp;之二十五ADnbsp;RMS信任策略
  4. SecSolar:为代码“捉虫”,让你能更专心写代码
  5. UVA13029 Emoticons【文本处理】
  6. 将bin文件以16进制字符显示
  7. c# 操作Word总结(四)——书签使用
  8. PR2打印机参数设置
  9. python毕业设计总结范文大全_java毕业设计总结报告(精选范文3篇)
  10. 内网渗透小技巧(转载)
  11. 我用 140 行代码,带你看一场流星雨⭐
  12. LeetCode简单-Python-(13)罗马数字转整数
  13. 一文读懂自动驾驶中的机器人操作系统ROS
  14. 解决pip下载速度慢的问题:更换国内源
  15. 小陈老师、雪人 HRBUST - 1176(优先队列+)
  16. java bean嵌套,Mockito注入嵌套bean
  17. 优酷路由宝刷梅林_优酷路由宝 YK-L1c 和 YK-L1 刷入 Breed 不死和 hiboy Padavan 固件...
  18. 【虚幻引擎UE】UE5 三种模式调用API详解(案例基于免费Varest插件)
  19. 游戏剧本怎么写_我写了一本剧本来帮助设计师使用真实代码构建原型
  20. 数据压缩原理与应用 WAV文件的分析

热门文章

  1. PyRobot开辟 AI 机器人框架
  2. 提升网页加载速度—预加载VS预读取
  3. 黑马程序员C++学习笔记(第二阶段核心:面向对象)(二)
  4. c++11 多线程编程(五)------unique_lock
  5. oracle和redis关联查询,redis与oracle之间如何可以实现数据同步
  6. 基于持久层框架hibernate用SpringMVC增删功能
  7. 通知NSNotificationCenter
  8. 实际开发中的问题积累【积累】
  9. 代码阅读是写好程序的基本能力
  10. 【Python】一句话 if else 简洁写法