Java之线程(sleep,线程名)

本文介绍了Java线程的创建、启动及管理方法,包括如何为线程命名、使用sleep方法进行时间间隔操作,以及线程名字的由来。通过示例展示了如何使用Thread类的不同构造函数,并详细说明了线程之间的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考资料
1 Java线程:创建与启动
[url]http://lavasoft.blog.51cto.com/62575/99151[/url]
[b]运用场景:[/b]
[color=red]在使用很多线程的时候,要区分每个线程的标记,就要加上你自定义线程的名字,sleep也经常用,比如你在发送邮件或者执行其它任务的时候,想要每间隔多少秒执行一次,sleep就会用上[/color] :lol:
[color=blue]线程的名字,一个运行中的线程总是有名字的,名字有两个来源,一个是虚拟机自己给的名字,一个是你自己的定的名字。在没有指定线程名字的情况下,虚拟机总会为线程指定名字,并且主线程的名字总是mian,非主线程的名字不确定。
sleep方法属于Thread类中方法,表示让一个线程进入睡眠状态,等待一定的时间之后,自动醒来进入到可运行状态,不会马上进入运行状态,因为线程调度机制恢复线程的运行也需要时间,一个线程对象调用了sleep方法之后,并不会释放他所持有的所有对象锁,所以也就不会影响其他进程对象的运行。但在sleep的过程中过程中有可能被其他对象调用它的interrupt(),产生InterruptedException异常,如果你的程序不捕获这个异常,线程就会异常终止,进入TERMINATED状态,如果你的程序捕获了这个异常,那么程序就会继续执行catch语句块(可能还有 finally语句块)以及以后的代码[/color]
[b]sleep(long millis)
在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)
sleep(long millis, int nanos)
在指定的毫秒数加指定的纳秒数内让当前正在执行的线程休眠(暂停执行)[/b]
Thread它有8个不同的构造函数,如下:
[img]http://dl.iteye.com/upload/attachment/566782/523ba523-dbb8-3eb9-aa10-12b1ddb570d3.jpg[/img]
示例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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值