`

Java之线程(sleep,线程名)

    博客分类:
  • Java
阅读更多
参考资料
1 Java线程:创建与启动
http://lavasoft.blog.51cto.com/62575/99151
运用场景:
在使用很多线程的时候,要区分每个线程的标记,就要加上你自定义线程的名字,sleep也经常用,比如你在发送邮件或者执行其它任务的时候,想要每间隔多少秒执行一次,sleep就会用上
线程的名字,一个运行中的线程总是有名字的,名字有两个来源,一个是虚拟机自己给的名字,一个是你自己的定的名字。在没有指定线程名字的情况下,虚拟机总会为线程指定名字,并且主线程的名字总是mian,非主线程的名字不确定。
sleep方法属于Thread类中方法,表示让一个线程进入睡眠状态,等待一定的时间之后,自动醒来进入到可运行状态,不会马上进入运行状态,因为线程调度机制恢复线程的运行也需要时间,一个线程对象调用了sleep方法之后,并不会释放他所持有的所有对象锁,所以也就不会影响其他进程对象的运行。但在sleep的过程中过程中有可能被其他对象调用它的interrupt(),产生InterruptedException异常,如果你的程序不捕获这个异常,线程就会异常终止,进入TERMINATED状态,如果你的程序捕获了这个异常,那么程序就会继续执行catch语句块(可能还有 finally语句块)以及以后的代码

sleep(long millis)    
在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)
sleep(long millis, int nanos)
在指定的毫秒数加指定的纳秒数内让当前正在执行的线程休眠(暂停执行)

Thread它有8个不同的构造函数,如下:

示例A
import java.util.Date;

public class MyThread extends Thread {		

	@SuppressWarnings("deprecation")
	@Override
	public void run() {
		System.out.println("咫尺天涯的第一个线程(Thread)启动了。。。");
		while(true){
			System.out.println("系统默认的线程名字: "+ this.getName()+",自定义线程名字: "  + Thread.currentThread().getName() +",当前秒: " + new Date().getSeconds());
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
}

示例B
import java.util.Date;

public class MyRunnable implements Runnable {

	@SuppressWarnings("deprecation")
	@Override
	public void run() {
		System.out.println("咫尺天涯的第一个线程(Runnable)启动了。。。");
		while(true){
			System.out.println("自定义线程名字: "+Thread.currentThread().getName()+",当前秒: " + new Date().getSeconds());
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
}

public class Main {
	
	public static void main(String[] args) {				
		
		MyThread myThread = new MyThread();
		Thread thread = new Thread(myThread,"咫尺天涯(Thread)");
		thread.start();
		
		MyRunnable myRunnable = new MyRunnable();		
		Thread runnable = new Thread(myRunnable,"咫尺天涯(Runnable)");
		runnable.start();		
	}
}

输出结果如下:
咫尺天涯的第一个线程(Thread)启动了。。。
咫尺天涯的第一个线程(Runnable)启动了。。。
系统默认的线程名字: Thread-0,自定义线程名字: 咫尺天涯(Thread),当前秒: 37
自定义线程名字: 咫尺天涯(Runnable),当前秒: 37
自定义线程名字: 咫尺天涯(Runnable),当前秒: 38
系统默认的线程名字: Thread-0,自定义线程名字: 咫尺天涯(Thread),当前秒: 38
自定义线程名字: 咫尺天涯(Runnable),当前秒: 39
系统默认的线程名字: Thread-0,自定义线程名字: 咫尺天涯(Thread),当前秒: 39
自定义线程名字: 咫尺天涯(Runnable),当前秒: 40
系统默认的线程名字: Thread-0,自定义线程名字: 咫尺天涯(Thread),当前秒: 40
自定义线程名字: 咫尺天涯(Runnable),当前秒: 41
系统默认的线程名字: Thread-0,自定义线程名字: 咫尺天涯(Thread),当前秒: 41
  • 大小: 14.5 KB
分享到:
评论

相关推荐

    java 多线程设计模式 进程详解

    《Java线程 高清晰中文第二版》中文第二版(PDF) 前言 第一章 线程简介 Java术语 线程概述 为什么要使用线程? 总结 第二章 Java线程API 通过Thread类创建线程 使用Runable接口的线程 线程的生命周期 线程命名 ...

    java多线程示例

    Java中的多线程有三种实现方式: 1.继承Thread类,重写run方法。Thread本质上也是一个实现了Runnable的实例,他代表一个线程的实例,并且启动线程的唯一方法就是通过Thread类的start方法。 2.实现Runnable接口,并...

    Java线程中wait,await,sleep,yield,join用法总结.pdf

    Java线程中wait、await、sleep、yield、join用法汇总,文章里面总结了这些关键字的用法,并且里面带有源码帮助分析用法,此一文就可以理解这些关键字用法,推荐拥有

    简单的java线程代码

    简单的java线程代码 对Thread中的sleep方法进行测试

    java线程分析java project例子

    java线程分析java project例子,里面分析了sleep(),join(),yield()和wait以及notify等方法的使用以及需要注意的地方。

    java用线程两种方式

    * 分别使用Runnable接口和Thread类编程实 编写一应用程序创建两个线程一个线程打印输出1—1000之间所有的奇数(Odd Number) * 另外一个线程打印输出1-1000之间所有的偶数(Even Number)要求两个线程随机休眠一 段...

    java多线程

    线程“张工”和线程“王工”分别负责“搬运苹果”(3箱)和“搬运香蕉”(3箱),他们每搬运一箱,就准备休息10秒钟(sleep方法),但是线程“老板”负责不让他们休息(interrupt方法)。 2. 编写一个包含主方法main...

    JAVA线程sleep()和wait()详解及实例

    主要介绍了JAVA线程sleep()和wait()详解及实例的相关资料,探讨一下sleep()和wait()方法的区别和实现机制,需要的朋友可以参考下

    Java线程中sleep和wait的区别详细介绍

    Java中的多线程是一种抢占式的机制,而不是分时机制。抢占式的机制是有多个线程处于可运行状态,但是只有一个线程在运行

    java多线程设计模式

    java多线程设计模式 线程的创建和重起 线程的同步 wait/notify/sleep机制 Worker Pattern

    线程学习小Test

    Java线程 wait notify sleep join 同步实现Demo

    java线程学习笔记

    2.3 线程本地存储(Java.lang.ThreadLocal) 15 2.4 线程阻塞 17 2.4.1 调用sleep(millisecond)使任务进入休眠状态 17 2.4.2 等待输出与输入 17 2.4.3 对象锁不可用 17 2.4.4 通过wait()使线程挂起。 17 2.5 线程...

    java多线程机制 -- 源码详解

    首先,在小程序的start()方法中构造了一个名为circleThread的线程并调用线程类的start()方法来启动这一线程,即在小程序的主线程中又开始了一个线程:circleThread。下面的语句建立了一个新的线程: circlethread =...

    线程的基本概念、线程类、任务类、线程优先级、sleep()方法、yield()方法、join方法、interrupt()方法

    线程的基本概念、线程类、任务类、线程优先级、sleep()方法(休眠)、yield()方法(礼让)、join方法(合并)、interrupt()方法(中断),线程的生命周期 线程 与 进程 的关系:**有一个进程中至少包含一个线程 **...

    个人总结的深入java多线程开发

    看完《think in java》多线程章节,自己写的多线程文档,还结合了其他的相关网络资料。 线程 一. 线程池 1)为什么要使用线程池 2 2)一个具有线程池的工作队列 3 3)使用线程池的风险: 4 4)有效使用线程池的原则 5...

    java 参赛者的比赛生活(线程休眠唤醒)

    java 参赛者的比赛生活(线程休眠唤醒) java 参赛者的比赛生活(线程休眠唤醒) java 参赛者的比赛生活(线程休眠唤醒)

    Java多线程教程吐血整理干货.md

    sleep方法和wait方法的区别 stop,suspend,resume等方法为什么会被遗弃 interrupt,interrupted,isInterrupted方法区别 join方法 yield方法 多线程 进程和线程 进程与线程最主要的区别是它们是操作系统管理资源的不同...

    java基本教程之线程休眠 java多线程教程

    本文对javaThread中sleep()方法进行介绍,sleep() 的作用是让当前线程休眠,即当前线程会从“运行状态”进入到“休眠(阻塞)状态”,大家参考使用吧

    java sleep()和wait()

    sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行.wait()和它的区别请查看下载。

    Java多线程问题

    1)现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行? 2)在Java中Lock接口比synchronized块的优势是什么? 3)在java中wait和sleep方法的不同?

Global site tag (gtag.js) - Google Analytics