`

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多线程Demo

    Java线程有10个优先级(MIN_PRIORITY, NORM_PRIORITY, MAX_PRIORITY),默认优先级是NORM_PRIORITY。但是,线程优先级并不保证绝对的执行顺序,操作系统调度策略可能影响实际执行顺序。 7. join()方法: 一个线程...

    Java多线程知识点总结

    此外,sleep方法可以使线程进入阻塞状态一段时间,而join方法则允许一个线程等待另一个线程完成其任务。 了解线程池的概念也是Java多线程编程中的一个重要知识点。线程池是一种多线程处理形式,它将线程和任务的...

    java多线程经典案例

    阻塞状态通常发生在线程等待I/O操作完成、调用sleep()方法、等待锁释放或者调用join()方法等待其他线程结束时。 在`threadTest`这个案例中,我们可能会看到如何使用这些概念来创建实际的应用场景。例如,一个典型的...

    java多线程进度条

    在Java编程中,多线程是一项关键特性,它允许程序同时执行多个任务,提升系统效率。在处理耗时操作如大文件下载、数据处理或网络请求时,展示进度条能够提供用户友好的交互体验,让使用者了解任务的完成状态。本主题...

    Java多线程机制(讲述java里面与多线程有关的函数)

    挂起线程通常通过调用`sleep()`或`wait()`方法实现,恢复线程可能通过`notify()`或`notifyAll()`唤醒,终止线程则可以通过`interrupt()`方法发送中断请求,但线程本身需要检查`isInterrupted()`或`...

    Java 多线程 PPT

    创建Java线程主要有两种方式: 1. 继承Thread类:创建Thread的子类并重写run()方法,然后通过调用start()方法启动线程。 2. 实现Runnable接口:创建一个实现了Runnable接口的类,实现run()方法,然后将该类的实例...

    Java多线程实现异步调用实例

    在这个实例中,可能有四个线程:主线程(Main)以及名为A、B和C的三个子线程。每个子线程可能代表不同的任务,它们并行运行,从而加快整体处理速度。 主线程通常是程序的入口点,它负责启动其他线程并协调它们的...

    深入浅出 Java 多线程.pdf

    Thread 类是一个基本的线程类,它提供了许多有用的方法来控制线程的执行,如 start() 方法、join() 方法、sleep() 方法等。Runnable 接口是一个函数式接口,它提供了一个 run() 方法,用于定义线程的执行逻辑。 二...

    Java多线程技术精讲

    创建Java线程主要有两种方式:继承Thread类和实现Runnable接口。继承Thread类可以直接重写run()方法,而实现Runnable接口则需要提供一个包含业务逻辑的run()方法,并通过构造Thread对象传入该Runnable实例。后者更为...

    Java多线程编程线程的协同、停止、暂停、继续等操作实现

    例如,`Thread.sleep()`、`SocketInputStream.read()`等阻塞方法在被中断时会抛出`InterruptedException`,从而让线程有机会终止。 5. **线程池的控制** `java.util.concurrent`包中的`ExecutorService`和`...

    java多线程示例

    在Java编程语言中,多线程是核心特性之一,它允许程序同时执行多个任务,从而提高了应用程序的效率和响应速度。本示例着重探讨如何在Java中实现和管理多线程,以及它带来的挑战和解决方案。 一、Java多线程基础 1. ...

    java多线程模拟队列实现排队叫号

    在Java编程中,多线程技术常常用于模拟现实世界中的并发场景,比如模拟排队叫号系统。这个系统可以通过创建多个线程来代表等待服务的客户,一个线程代表叫号服务,通过队列数据结构来有序地管理这些线程。下面我们将...

    java 多线程.ppt,多线程

    Java线程有五种基本状态:新建(NEW)、可运行(RUNNABLE)、阻塞(BLOCKED)、等待(WAITING)和终止(TERMINATED)。线程从新建到终止会经历这些状态的转换。 4. 线程同步与互斥: 为了避免多线程环境下资源...

    java多线程学习

    每个进程至少包含一个线程,我们称之为主线程。而线程则是进程中独立执行路径的单位,它是程序执行流的最小单元,又被称作是进程中的一个控制单元。一个进程可以拥有多个线程,这些线程共享进程的资源,同时并发地...

    java多线程源码,仅供参考

    这个名为"java多线程源码,仅供参考"的压缩包文件,显然是为了帮助学习者深入理解Java多线程的运行机制。其中的示例程序"BounceThread"可能是一个演示线程交互和同步的经典案例,常用于教授线程的创建、运行以及线程...

    java多线程进度条实例

    在Java编程中,多线程是一项关键特性,它允许程序同时执行多个任务,极大地提高了效率。本实例将探讨如何利用Java实现一个具有进度条显示功能的多线程应用。进度条通常用于可视化地表示某个任务的完成程度,这对于长...

    Java多线程编程总结

    #### 一、Java线程:概念与原理 1. **操作系统中线程和进程的概念** - 当前的操作系统通常为多任务操作系统,多线程是实现多任务的一种手段。 - **进程**:指内存中运行的应用程序,每个进程拥有独立的内存空间。...

    Java多线程的总结

    理解这些状态有助于我们更好地控制线程的行为,例如,通过调用sleep()方法可以使线程进入阻塞状态,join()方法可以使主线程等待子线程完成。 三、线程同步与互斥 在多线程环境下,数据共享可能会引发数据不一致的...

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

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

    java多线程应用实现示例

    在Java编程语言中,多线程是其核心特性之一,它允许程序同时执行多个任务,提高了应用程序的效率和响应性。本示例着重探讨如何在Java中实现多线程,并通过一个具体的小球运动模拟来阐述相关概念。 一、多线程基础 ...

Global site tag (gtag.js) - Google Analytics