多线程基础知识总结一---创建命名休眠

本文总结了Java中创建多线程的两种方式——继承Thread类和实现Runnable接口,并介绍了如何设置和获取线程名,以及如何使线程进入休眠状态。通过实例代码展示了具体的实现过程。
摘要由CSDN通过智能技术生成

多线程基础知识总结一

创建多线程的两种方式

继承Thread类

  1. SonThread.java类文件中包含具体执行内容
package com.test;    //注意所在包

public class SonThread extends Thread {

	private String tName;

	public String gettName() {
		return tName;
	}

	public void settName(String tName) {
		this.tName = tName;
	}

	public SonThread() {
		super();
		// TODO Auto-generated constructor stub
	}

	public SonThread(String name) {
		super();
		// TODO Auto-generated constructor stub
		this.tName = name;
	}
	@Override
	public void run() {
		// TODO Auto-generated method stub
		super.run();
		Thread.currentThread().setName(tName); // 设置线程名
		for (int i = 0; i < 20; i++) {

			try {
				Thread.sleep(1000); // 休眠函数
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

			System.out.println(Thread.currentThread().getName() + "-->" + i); // 获取线程名
		}
	}

}

  1. SonMain.java中创建多线程并执行
package com.test;

import org.junit.Test;

/*
 * 主线程:执行主(main)方法的线程
 * 单线程程序:Java程序中只有一个线程
 * 执行从main方法开始,从上到下依次执行
 * JVM执行main方法,main方法会进入到栈内存
 * JVM会找操作系统开辟一条main()方法通向CPU的执行路径
 * cpu就可以通过这个路径来执行main方法
 * 而这条路径有一个名字,叫做main(主)线程
 */
public class SonMain {

	@Test
	public void Test() {
		SonThread sT = new SonThread("01");
		sT.start();   //开辟新的栈空间  
		// sT.run(); run()是main进程中的一个方法的调用 该方法中对线程的操作 实际上还是对main进程的操作
		new SonThread("02").start();
	}

}

实现Runnable接口

  1. implements Runnable实现代码(这里都是Junit Test Case可以改为Main函数实现)
package com.test;

public class RunnableThread implements Runnable {
	private String tname;

	public String getTname() {
		return tname;
	}

	public void setTname(String tname) {
		this.tname = tname;
	}

	public RunnableThread() {
		super();
		// TODO Auto-generated constructor stub
	}

	public RunnableThread(String tname) {
		super();
		this.tname = tname;
	}

	@Override
	public void run() {
		// TODO Auto-generated method stub
		Thread.currentThread().setName(tname);
		for (int i = 0; i < 20; i++) {
			System.out.println(Thread.currentThread().getName() + "-->" + i);
		}
	}

}
  1. RunnableMain.java中创建多线程并执行
package com.test;

import org.junit.Test;

public class RunnableMain {
	@Test
	public void test(){
		RunnableThread run=new RunnableThread("线程1");
		Thread rd_1=new Thread(run);
		rd_1.start();
		
		Thread rd_02=new Thread(new RunnableThread("线程02"));
		rd_02.start();
		
		new Thread(new RunnableThread("线程003")).start();
	}

}

线程名

设置当前线程名

/*
 * 设置线程名称:
 * 1、使用Thread类中的方法setName
 *     void setName(String name) 改变线程名称,使之与参数name相同
 * 2、创建一个带参数的构造方法,参数传递线程的名称;调用父类的带参构造方法使线程名称传递给父类
 * 让父类给子线程起个名字
 * */

Thread.currentThread().setName("我名由我不由天");

获取并输出当前线程名

System.out.println(Thread.currentThread().getName());

运行效果

在这里插入图片描述

进程进入休眠状态

Thread.sleep(1000);

package com.sleep;
/*
 * public static void sleep(long millis):
 * 使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行)
 * 毫秒数结束之后,线程继续执行
 * 
 */
public class Sleep {
	public static void main(String []args){
		for(int i=0;i<=60;i++){
			System.out.println(i);
			//使用Thread类的sleep方法让程序睡眠1秒钟
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}	
	}
}

匿名内部类实现多线程

有继承Thread类和实现Runnable接口两种方式

import org.junit.Test;
public class InnerClassMain {
	@Test
	public void test() {
		// 匿名内部类实现多线程:方式一
		new Thread() {
			@Override
			public void run() {
				// TODO Auto-generated method stub
				super.run();
				Thread.currentThread().setName("我是Thread匿名内部类");
				for (int i = 0; i < 20; i++) {
					System.out.println(Thread.currentThread().getName() + "-->"
							+ i);
				}
			}
		}.start();
		
		// 匿名内部类实现多线程:方式一
		new Thread(new Runnable() {
			@Override
			public void run() {
				Thread.currentThread().setName("我是Runnable匿名内部类");

				// TODO Auto-generated method stub
				for (int i = 0; i < 20; i++) {
					System.out.println(Thread.currentThread().getName() + "-->"
							+ i);
				}
			}
		}).start();
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值