java中线程的优先级

这个博客展示了如何在Java中设置线程的优先级。通过创建三个Print类的线程实例并设置不同优先级,观察它们如何影响执行顺序。线程th1被设置为最高优先级(10),th2为最低优先级(1),th3默认优先级。每个线程负责打印1000个数字,每20个数字换行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package thread;

public class 线程优先级 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//给线程命名
		Tang tang = new Tang();
		Thread tangTh = new Thread(tang);
		tangTh.setName("煮汤线程");//给线程命名
		System.out.println(tangTh.getName()+"的优先级是:"+tangTh.getPriority());
		Cooking cooking = new Cooking();
		Thread cookingTh = new Thread(cooking);
		cookingTh.setName("炒菜线程");
		System.out.println(cookingTh.getName()+"的优先级是:"+cookingTh.getPriority());
		
		tangTh.setPriority(10);
		cookingTh.setPriority(1);
		tangTh.start();
		cookingTh.start();
	}

}

class Tang implements Runnable{
	public void bao(){
		for (int i = 1; i <= 4; i++) {
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			System.out.println("枸杞老鸭汤,煲了"+i+"个小时了");
			
		}
		System.out.println("汤好了");
	}

	@Override
	public void run() {
		// TODO Auto-generated method stub
		bao();
	}
}

class Cooking implements Runnable{
	public void cook(){
		for (int i = 1; i <= 4; i++) {
			try {
				Thread.sleep(600);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			System.out.println("正在炒个"+i+"菜");
		}
		System.out.println("菜好了");
	}

	@Override
	public void run() {
		// TODO Auto-generated method stub
		cook();
	}
}


例子二

package thread;


public class 优先级使用2 {


public static void main(String[] args) {
// TODO Auto-generated method stub
Thread th1 = new Thread(new Print1());
Thread th2 = new Thread(new Print1());
Thread th3 = new Thread(new Print1());
th1.setPriority(10);
th2.setPriority(1);
th1.start();
th2.start();
th3.start();
}


}


//打印1-1000
class Print1 implements Runnable{


@Override
public void run() {
// TODO Auto-generated method stub
for (int i = 1; i < 1000; i++) {
System.out.print(i+"\t");
if(i%20 == 0)
System.out.println();
}
}

}


//打印1001-2000
class Print2 implements Runnable{


@Override
public void run() {
// TODO Auto-generated method stub
for (int i = 1001; i < 2000; i++) {
System.out.print(i+"\t");
if(i%20 == 0)
System.out.println();
}
}

}


//打印2001-3000
class Print3 implements Runnable{


@Override
public void run() {
// TODO Auto-generated method stub
for (int i = 2001; i < 3000; i++) {
System.out.print(i+"\t");
if(i%20 == 0)
System.out.println();
}
}

}

package thread;

public class 优先级使用2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Thread th1 = new Thread(new Print1());
		Thread th2 = new Thread(new Print1());
		Thread th3 = new Thread(new Print1());
		th1.setPriority(10);
		th2.setPriority(1);
		th1.start();
		th2.start();
		th3.start();
	}

}

//打印1-1000
class Print1 implements Runnable{

	@Override
	public void run() {
		// TODO Auto-generated method stub
		for (int i = 1; i < 1000; i++) {
			System.out.print(i+"\t");
			if(i%20 == 0)
				System.out.println();
		}
	}
	
}

//打印1001-2000
class Print2 implements Runnable{

	@Override
	public void run() {
		// TODO Auto-generated method stub
		for (int i = 1001; i < 2000; i++) {
			System.out.print(i+"\t");
			if(i%20 == 0)
				System.out.println();
		}
	}
	
}

//打印2001-3000
class Print3 implements Runnable{

	@Override
	public void run() {
		// TODO Auto-generated method stub
		for (int i = 2001; i < 3000; i++) {
			System.out.print(i+"\t");
			if(i%20 == 0)
				System.out.println();
		}
	}
	
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值