Java学习笔记之线程(二):线程的常用方法

本文详细介绍了Java中线程的基本概念及其常用方法,包括线程的创建、命名、优先级设置及线程间的调度机制。通过实例展示了如何使用Thread类进行线程控制,并解释了线程睡眠等关键操作。
package com.demo;

/* 	
 * 	线程的常用方法:
 * 		Thread(String name)     初始化线程的名字
 *		getName()             	返回线程的名字
 *		setName(String name)    设置线程名字
 *
 *		sleep()                 线程睡眠指定的毫秒数。
 *								静态的方法,哪个线程执行了sleep()方法,就是哪个线程睡眠;
 *
 * 		currentThread()      	返回当前的线程对象。
 * 								静态方法,哪个线程执行了currentThread()方法,就返回哪个线程的对象;								
 * 		
 *		getPriority()           返回当前线程对象的优先级, 默认线程的优先级是5;
 *								优先级越高的线程,获取CPU执行权的几率越高;								
 *		
 *		setPriority(int newPriority) 	设置线程的优先级,虽然设置了线程的优先级,但是具体的实现取决于底层的
 *										操作系统的实现(最大的优先级是10 ,最小的1 , 默认是5)。
 */

public class Demo2 extends Thread {

	// 无参构造
	public Demo2(){
		
	}
	
	// 带参构造
	public Demo2(String name) {
		super(name);	// 显示调用父类的构造
	}

	@Override
	public void run() {
		for (int i = 0; i < 20; i++){
			try {
				// run()方法中的所有代码都是自定义线程在执行,所以此处睡眠的是自己定义的线程;
				// 此处不能抛出异常,只能捕获,是因为父类(Thread类)中的run方法没有抛出异常;
				Thread.sleep(100); 
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			System.out.println(this.getName() + ":" + i); // this表示当前线程
		}
		
		// 证明this就是当前线程
		System.out.println("this对象: " + this);
		System.out.println("当前线程对象: " + Thread.currentThread());
	}
	
	public static void main(String[] args) throws InterruptedException {
		
		Demo2 d1 = new Demo2();
		System.out.println("线程默认名字:" + d1.getName()); 	// Thread-0(默认名字)
//		d1.start();
		
		Demo2 d2 = new Demo2();
		System.out.println("线程默认名字:" + d2.getName()); 	// Thread-1(默认名字)
//		d2.start();
		
		Demo2 d3 = new Demo2("自定义线程");		// 指定线程的名字,必须要在构造方法中显示调用父类的构造才可以
		System.out.println("初始化线程名字:" + d3.getName());	
//		d3.start();
		
		Demo2 d4 = new Demo2("线程的名字");
		d4.setName("设置的名字");				// 设置线程名字
		System.out.println("setName()设置的名字:" + d4.getName());
//		d4.start();
		
		Demo2 d5 = new Demo2("睡眠线程");
		Demo2.sleep(1000);			// 因为main方法中的所有代码都是主线程在执行,所以此处睡眠的是主线程;
//		d5.start();
		
		// 此处获取的是main线程;
		System.out.println("当前线程:" + Thread.currentThread().getName());
		
		// 线程的默认优先级都是5;
		Demo2 d6 = new Demo2();
		System.out.println("自定义线程的优先级:" + d6.getPriority());
		System.out.println("主线程优先级:" + Thread.currentThread().getPriority());
//		d6.start();
	}
	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值