一.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. jQuery 字符串拼接

    jQuery 字符串拼接 // 字符串加变量拼接 $('#id 标签名[属性名="' + 变量 + '"]')

  2. Dockerfile构建容器---语法高亮

    三个文件扔进相关的目录即可 wget -O /usr/share/vim/vimfiles/doc/dockerfile.txt https://raw.githubusercontent.com/a ...

  3. [c/c++] programming之路(25)、字符串(六)——memset,Unicode及宽字符,strset

    一.memset #include<stdio.h> #include<stdlib.h> #include<memory.h> void *mymemset(vo ...

  4. 关于decode("utf-8")出现编码错的提示

    data = data.decode("utf-8") 出现错误时候可以加上第二个参数  如下; data = data.decode("utf-8",&quo ...

  5. Learning-MySQL【6】:视图、触发器、存储过程、函数、流程控制

    一.视图 视图就是通过查询得到一张虚拟表,然后保存下来,下次用的直接使用即可.使用视图我们可以把查询过程中的临时表摘出来,用视图去实现,这样以后再想操作该临时表的数据时就无需重写复杂的 SQL 语句了 ...

  6. webpack引入eslint详解

  7. redhat7.2安全基线BI

    (一)   Redhat linux7.2安全基线基本型(BI) 1.   密码复杂度策略 /etc/pam.d/system-auth文件中,增加内容 password requisite pam_ ...

  8. 第 8 章 容器网络 - 066 - Weave 如何与外网通信?

    Weave 与外网通信 weave 是一个私有的 VxLAN 网络,默认与外部网络隔离. 外部网络如果要访问到 weave 中的容器:1.首先将主机加入到 weave 网络.2.然后把主机当作访问 w ...

  9. 『TensorFlow』流程控制

    『PyTorch』第六弹_最小二乘法对比PyTorch和TensorFlow TensorFlow 控制流程操作 TensorFlow 提供了几个操作和类,您可以使用它们来控制操作的执行并向图中添加条 ...

  10. PAT 1084 Broken Keyboard

    1084 Broken Keyboard (20 分)   On a broken keyboard, some of the keys are worn out. So when you type ...