1.5 sleep()方法

方法sleep()的作用是在指定的毫秒数内让当前"正在执行的线程"休眠(暂停执行)。这个“正在执行的线程”是指this.currentThread()返回的线程。

注:this.currentThread()在IDE中报错,提示使用类名调用静态方法,但实际并不影响运行。

线程代码:

public class Thread1 extends Thread {
    @Override
    public void run() {
        try {
            System.out.println("run threadName = " + this.currentThread().getName() + " begin");
            Thread.sleep(2000);
            System.out.println("run threadName = " + this.currentThread().getName() + " end");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

执行代码:

public class Main {
    public static void main(String[] args) {
        Thread1 t1 = new Thread1();
        System.out.println("begin = " + System.currentTimeMillis());
        t1.run();
        System.out.println("end = " + System.currentTimeMillis());
    }
}

执行结果:

创建线程代码2:

public class Thread2 extends Thread {
    @Override
    public void run() {
        try {
            System.out.println("run threadName = " + this.currentThread().getName() + " begin =" +System.currentTimeMillis());
            Thread.sleep(2000);
            System.out.println("run threadName = " + this.currentThread().getName() + " end =" +System.currentTimeMillis());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

创建执行代码:

public class Main {
    public static void main(String[] args) {
        Thread2 t2 = new Thread2();
        System.out.println("begin = " + System.currentTimeMillis());
        t2.start();
        System.out.println("end = " + System.currentTimeMillis());
    }
}

执行结果:

注:main与Thread2线程是异步执行的,所以先打印出begin与end,然后再打印run begin与run end

源码地址:https://github.com/lilinzhiyu/threadLearning

本文内容是书中内容兼具自己的个人看法所成。可能在个人看法上会有诸多问题(毕竟知识量有限,导致认知也有限),如果读者觉得有问题请大胆提出,我们可以相互交流、相互学习,欢迎你们的到来,心成意足,等待您的评价。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小灰灰

Java并发学习之ThreadLocal使用及原理介绍

ThreadLocal使用及原理介绍 线程本地变量,每个线程保存变量的副本,对副本的改动,对其他的线程而言是透明的(即隔离的) 1. 使用姿势一览 使用方式也...

1956
来自专栏海纳周报

synchronized关键字的语义

上一篇文章,我们讲到,如果发生了多个线程共同访问一个全局变量的时候,就会发生各种意料之外的情况。其实现实生活中有很多这样的例子。我举一个例子。 一群人都要过河,...

3437
来自专栏老付的网络博客

Java中的容器

在Java中有常用的三种类型的容器,分别是List 、Map、Set,基于这个三个基本的类型,派生出很多其它的类型,具体关系如下:

922
来自专栏Android知识点总结

Java容器源码攻坚战--第二战:ArrayList

952
来自专栏格子的个人博客

Java源码阅读之ArrayList - JDK1.8

当你对某件事情很感兴趣的时候,时间的流逝在感知中都模糊了(是不是很文艺,绕口得都快听不懂了),通俗来说,就是时间过得很快。

1075
来自专栏青枫的专栏

同步解决线程安全问题的三种实现

561
来自专栏xingoo, 一个梦想做发明家的程序员

程序猿的日常——Java中的集合列表

列表对于日常开发来说实在是太常见了,以至于很多开发者习惯性的用到数组,就来一个ArrayList,根本不做过多的思考。其实列表里面还是有很多玩法的,有时候玩不...

1906
来自专栏栗霖积跬步之旅

java多线程编程核心技术——第二章总结

第一节synchronized同步方法目录 1.1方法内的变量为线程安全的 1.2实例变量非线程安全 1.3多个对象多个锁 1.4synch...

18910
来自专栏lgp20151222

ThreadLocal基本原理及运用

ThreadLocal提供本地线程变量。这个变量里面的值(通过get方法获取)是和其他线程分割开来的,变量的值只有当前线程能访问到,不像一般的类型比如Perso...

742
来自专栏前端进阶之路

JavaScript数据结构03 - 队列

队列是遵循FIFO(First In First Out,先进先出)原则的一组有序的项。队列在尾部添加新元素,并从顶部移除元素。最新添加的元素必须排在队列的末尾...

471

扫码关注云+社区