多线程入门(1)

多线程入门

线程和进程

  • 什么是进程?

     我们可以把正在操作系统中运行的.exe程序理解成一个进程
    

在这里插入图片描述

  • 什么是线程?
    线程可以理解为在进程中独立运行子任务

使用多线程

  • 线程的创建:

  • ①,主方法(main)就是一个线程

public class Test {
	public static void main(String[] args) {
		System.out.println(Thread.currentThread().getName());
	}
}

在这里插入图片描述

  • ②.通过继承Thread类创建线程
 - `public class Mythread extends Thread {

	@Override
	public void run() {		
		super.run();//不能缺少
		System.out.println("MyThead");
	}}
	---------------main-------------------
		public static void main(String[] args) {
		Mythread mythread=new Mythread();
		mythread.start();
		System.out.println("运行结束");
	}
	----------------
输出结果:
		运行结束   //main线程
		MyThead  //MyThead线程
  • ③. 实现Runnable接口
public static void main(String[] args) throws InterruptedException {
		Thread thread=new Thread(new Runnable() {	
			@Override
			public void run() {
			System.out.println("Runnable中的run方法运行了");
				
			}
		});
		thread.start();
		Thread.sleep(200);
		System.out.println("main方法结束了");
	}
	---------------------------------
	运行结果:
			Runnable中的run方法运行了
			main方法结束了

可以使用Runnable接口创建线程的原因:

Thread类实现了Runnable接口,
thread.steart()方法调用了Runnable接口的run()方法
因此:线程要执行的内容可以放到Runnable里的run()方法中执行

使用Runnable接口的优点:

继承特性可以空出来去继承其他的类

Thread类的常用方法

①. static Thread CurrentThread():静态方法

功能:可返回代码端正在被哪个线程调用

②. static Thread sleep(long millis):静态方法

功能:将当前正在被执行的线程暂停millis毫秒
注意:正在被执行的线程指的是 this.currentThead()返回的线程
例如:
在main线程方法中执行 Thread.sleep() 休眠的就是main方法
在MyThread线程中执行 Thread.sleep() 休眠的就是MyThread线程
在main线程中执行mythread.sleep() 休眠的也是main方法

③.static void yield()

功能:线程让步。使用了这个方法之后,线程会让出CPU执行权,让自己或者其它的线程运行。

④. void setName()----设置线程名
⑤. void getName()-----获取线程名
⑥. void start()----启动线程


public class Mythread extends Thread {
	public Mythread() {
		System.out.println("构造方法的打印:"+Thread.currentThread().getName());
	}
	@Override
	public void run() {		
		super.run();
		
		System.out.println("run方法的打印:"+Thread.currentThread().getName());
	}
}
-----------------main----------------------
public static void main(String[] args) throws InterruptedException {
		Mythread mythread=new Mythread();
		Thread.start();
		Thread.sleep(2000);
		System.out.println("main");
	}

结果:
在这里插入图片描述

  • run()和start()的区别
    1)mythread.run():立即执行run()方法,不启动新的线程
    2)mythread.start():执行run()方法的时机不确定,启动新的线程
//MyThread线程同上
-------------main---------------
	public static void main(String[] args) throws InterruptedException {
		Mythread mythread=new Mythread();
		mythread.setName("mythread_haha");
		mythread.run();
		mythread.start();	
	}

结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值