学习JAVA多线程之创建线程的两种方式

#近期学习JAVA打卡!
犹豫开学忙着上课 考教师资格证和软件设计师证 很少去看JAVA 敲代码了(但是敲了一下前端的代码) 最近又回来看JAVA 学习多线程
首先学习了创建多线程的两种方法:
多线程的创建:方法一 继承Thread类
1创建一个类继承Thread类
2重写Thread中的run()
3创建一个子类对象
4用子类对象实现start()

方法二 实现Runnable接口
1.创建一个类实现Runnable接口
2.实现Runnable中的抽象方法Run()
3.创建实现类的对象
4.让对象作为参数传递到Thread的构造器中,创建Thread类的对象
5.通过Thread类调用start()

方法一和方法二的比较:
开发中 优先选择实现Runnable接口的方式
原因:1单继承的方式有一定的局限性
2实现的方式更适合多个线程共享数据的情况

联系:Thread类本身也实现了Runnable接口
相同点:两种方式都重写了run(),将线程的逻辑声明在run()中

然后 学习了Thread类中的一些方法以及线程的优先级

*1.start():启动线程,调用其中run()
*2.run():通常需要重写Thread中的run(),痛过调用run()来启动线程
*3.currentThread():静态方法,返回当前的线程
*4.getName():获取当前线程的名字
*5.setName():设置当前线程的名字
*6.join():在线程A中调用线程B的join(),线程A呈阻塞状态,直到线程B执行完,线程A才结束阻塞状态
*7.stop():已过时,执行此方法的时候,强制结束当前线程。
*8.sleep(long millitime):让当前线程睡眠指定的millitime毫秒,在指定的毫秒内,线程呈阻塞状态。
*9.yield():释放当前CPU的执行权
*10.isAlive():判断线程是否存活
*
*线程的优先级
*1.Max_Priority:10
*2.Min_Priority:1
*3.Norm_Priority:5
*如何获取线程的优先级
*1.setPriority(int I)设置线程的优先级
*2.getPriority()查看线程的优先级
*注:高优先级的在概率上是大于低优先级的,但是不一定比低优先级要快。

用方法一创建的线程:

class MyThread extends Thread {

	@Override
	public void run() {
		for(int i=0;i<100;i++) {
			if(i%2==0) {
				System.out.println(Thread.currentThread().getName()+":"+i);
			}
		}
	}	
}
public class FirstThread {
	public static void main(String[] args) {
		//创建Thread子类对象
		MyThread L1=new MyThread();
		//执行start方法
		L1.start();
		//问题1  不能通过直接执行run()来调用线程
		// L1.run();
		//问题2 在启动一个线程不可以让已经调用了start()的对象 需要重新再写一个对象
		MyThread L2=new MyThread();
		L2.start();
		
		//测试如下方法是否在主线程main中执行
		for(int i=0;i<100;i++) {
			if(i%2==0) {
				System.out.println(Thread.currentThread().getName()+":"+i+"******");
			}}
	}

}

用放方法二创建的线程

class MyThread1 implements Runnable{

	@Override
	public void run() {
		for (int i = 0; i < 100; i++) {
			if(i%2==0) {
				System.out.println(i);
			}
		
	}
		
	}
	
}

public class SecondThread {
	public static void main(String[] args) {
		MyThread1 MM=new MyThread1();
		Thread NN=new Thread(MM);
		NN.start();
		// MM.run();
		
	}
}

发布了29 篇原创文章 · 获赞 3 · 访问量 862

猜你喜欢

转载自blog.csdn.net/My_name_PeterLiu/article/details/103018931