IT彭于晏已经不想带你学Java之请你自学多线程

1.线程简介

线程和进程
 * 进程:一个正在运行的程序,就是一个进程
 * 线程:一个进程中 有很多个线程
 * (每一线程相当于一个执行的任务)
 * 
 * 开启一个线程相当于开启了CPU的一个执行路径(相对独立)
 * CPU在执行多个线程的时候 是随机的 跟线程的优先级有关
 * 分时调度 cpu会在多个线程中 进行随机切换 

2.实现线程的方法

在Java中主要提供了方式实现线程,分别为继承java.lang.Thread类与实现java.lang.Runnable接口

Thread线程类(开辟一个子线程)
 *1.创建一个Thread类的子类
 *2.重写run方法
 * run方法 就是你要线程执行的代码
 * 3.调用start代码 开启线程(不能重复调用)
class SubTread extends Thread {
	// 重写run方法
	@Override
	public void run() {
		for (int i = 0; i < 100; i++) {
			System.out.println("run-----" + i);
		}

		// 子线程执行的代码
		System.out.println("我是子线程");
	}
public static void main(String[] args) {
		// 创建一个子线程
		//开启多个线程时 多个线程会同时执行
		//并且是相对的独立的执行单元
		SubTread subTread = new SubTread();
		// 开启线程,调用start方法
		subTread.start();
		}

2.2实现Runnable接口

1.建立Runnable对象
2.使用参数为Runnable对象的构造方法创建Thread实例
3.调用start方法启动线程
	public static void main(String[] args) {
		//该方式也能 创建一个子线程
		//创建接口的实现类对象
		RunnableImpl runnableImpl = new RunnableImpl();
		//创建一个线程类对象
		Thread thread = new Thread(runnableImpl);
		//开启线程
		//thread.start();
	}

}
//创建一个类 实现Runnable接口
class RunnableImpl implements Runnable{
	//测试该方法能不能执行 是不是在子线程中执行
	@Override
	public void run() {
	for (int i = 0; i < 100; i++) {
		System.out.println(Thread.currentThread().getName()+"--"+i);
	}
		
	}
3.匿名内部类实现多线程
匿名内部类的方式创建线程
直接创建接口类的实现类对象
 注意:这种方式,new跟的是父类名,但创建出来的却是子类或实现类的对象
 匿名内部类创建出来的对象 是该类的子类对象
// 方式1(用Thread子类的方式)
		Thread thread = new Thread() {
			@Override
			public void run() {
				System.out.println("子线程执行的方法");
			}
		};
		thread.start();
		// 方式2(接口实现的方式)
		Runnable runnable = new Runnable() {
			@Override
			public void run() {
				System.out.println("子线程的方法");
			}
		};
		Thread thread2 = new Thread(runnable);
		thread2.start();
		// 方式3 把方式2的两步写一起
		Thread t3 = new Thread(new Runnable() {
			@Override
			public void run() {
				System.out.println("子线程的方法");
			}
		});

4.线程的生命周期



 
 


猜你喜欢

转载自blog.csdn.net/weixin_42120532/article/details/80571886
今日推荐