一.currentThread()方法

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

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

/**
* Returns a reference to the currently executing thread object.
*
* @return the currently executing thread.
*/
public static native Thread currentThread();

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

下面来看一个列子:

public class CurrentThreadText extends Thread{
public CurrentThreadText(){
System.out.println("构造器被"+Thread.currentThread().getName()+"线程调用了");
} @Override
public void run(){
System.out.println("run方法被"+Thread.currentThread().getName()+"线程调用了");
} public static void main(String[] args) {
System.out.println("main方法被"+Thread.currentThread().getName()+"线程调用了");
CurrentThreadText cu=new CurrentThreadText();
cu.start();
} }

结果如下:

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

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

代码如下:

    public static void main(String[] args) {
System.out.println("main方法被"+Thread.currentThread().getName()+"线程调用了");
CurrentThreadText cu=new CurrentThreadText();
cu.run();//我直接调用了run方法
}

结果:

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

二.isAlive()方法

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

列子如下:

public class IsAliveText extends Thread{
@Override
public void run(){
System.out.print("调用run这个方法的线程为"+this.getName());
if(this.isAlive()){
System.out.println("这个线程是活跃的");
}else{
System.out.println("这个线程是不活跃的");
}
} public static void main(String[] args) {
IsAliveText is=new IsAliveText();
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 class ThreadSleepText  {
public static void main(String[] args) throws Exception {
System.out.println("当前线程为"+Thread.currentThread().getName());
Thread.sleep(5000);
System.out.println("结束");
}
}

程序会在5秒后结束。

四.getID()方法

过得线程的唯一标识

Java多线程入门中几个常用的方法的更多相关文章

  1. Java多线程编程中Future模式的详解

    Java多线程编程中,常用的多线程设计模式包括:Future模式.Master-Worker模式.Guarded Suspeionsion模式.不变模式和生产者-消费者模式等.这篇文章主要讲述Futu ...

  2. Java多线程编程中Future模式的详解<转>

    Java多线程编程中,常用的多线程设计模式包括:Future模式.Master-Worker模式.Guarded Suspeionsion模式.不变模式和生产者-消费者模式等.这篇文章主要讲述Futu ...

  3. java多线程入门学习(一)

    java多线程入门学习(一) 一.java多线程之前 进程:每一个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销.一个进程包括1--n个线程.     线程:同一类线程共享代码 ...

  4. Java多线程学习(一)Java多线程入门

    转载请备注地址:https://blog.csdn.net/qq_34337272/article/details/79640870 系列文章传送门: Java多线程学习(一)Java多线程入门 Ja ...

  5. Delphi中TStringList类常用属性方法详解

    TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. 常规的用法大家都知道,现在来讨论它的一些高级的用法. 先把要讨论的几个属性列出来: 1.CommaText 2.Delim ...

  6. firebug中的console常用的方法

    firebug中的console常用的方法 1.console.log("Hello!"); --------------------显示基本信息 2.console.info(& ...

  7. (转载)Java多线程入门理解

    转载出处http://blog.csdn.net/evankaka 写在前面的话:此文只能说是java多线程的一个入门,其实Java里头线程完全可以写一本书了,但是如果最基本的你都学掌握好,又怎么能更 ...

  8. java多线程入门

    一.认识多任务.多进程.单线程.多线程 要认识多线程就要从操作系统的原理说起.   以前古老的DOS操作系统(V 6.22)是单任务的,还没有线程的概念,系统在每次只能做一件事情.比如你在copy东西 ...

  9. Java 多线程入门

    进程与线程 在学习Java多线程之前,先简单复习一下进程与线程的知识. 进程:进程是系统进行资源分配和调度的基本单位,可以将进程理解为一个正在执行的程序,比如一款游戏. 线程:线程是程序执行的最小单位 ...

随机推荐

  1. Pandas之索引

    Pandas的标签处理需要分成多种情况来处理,Series和DataFrame根据标签索引数据的操作方法是不同的,单列索引和双列索引的操作方法也是不同的. 单列索引 In [2]: import pa ...

  2. shell编程(一)之变量

    变量:命名的内存空间 bash的变量种类: 根据变量的生效范围等标准 本地变量: 生效范围为当前shell进程:对当前shell之外的其他shell进程,包括当前shell的子shell进程均无效 环 ...

  3. MySQL 变量类型

    用户定义的变量(前缀为@): 您可以访问任何用户定义的变量,而无需声明或初始化它.如果引用尚未初始化的变量,则其值为NULL和字符串类型. select @now2; NULL set赋值: set ...

  4. (转载)【UGUI】侧面滑出的菜单栏,宽度自适应

    首先看下项目效果 实现效果 发现实现效果并不难,利用动画(iTween)+UGUI 有一个长按的判断处理即可 附上项目和代码 using System.Collections; using Syste ...

  5. 异常:unity3d ArgumentException: The Assembly System.Configuration is referenced by System.Data.

    异常:ArgumentException: The Assembly System.Configuration is referenced by System.Data. But the dll is ...

  6. VIP系统

    不同等级的VIP可以被_req调用,以实现分级控制 不同的VIP等级可以增加装备升级.强化成功的几率,掉率增加,VIP泡点等 VIP系统可以通过制作多功能Item.Creature及Gameobjec ...

  7. 重建索引报错-python数据分析

    obj3 = pd.Series([']) obj3.reindex(range(), method='ffill') 此时会爆出一大堆错误. 出错原因是:之前 obj3 的索引是字符串类型,重新索引 ...

  8. EXCEL中把两列表格里的数字合成一列并且中间用逗号隔开

    背景:使用loadrunner做参数化时,往往需要在excel表格中做数据,比如:第一列是用户名,第二列是密码,格式如下: 再将用户名和密码合并成一列,以逗号分隔,需要用到的公式为: =A1& ...

  9. get函数

    dict={"name":"jary","age":22}print(dict.get("age")) # 通过键值找到 ...

  10. L0 Regularization

    参考: Learning Sparse Neural Networks through L0 Regularization The Variational Garrote