package com.www.java01;
/**
* 线程的优先级
*1.
* MAX_PRIORITY:10
* MIN_PRIORITY:1
* NORM_PRIORITY:5
*2.如何获取和设置线程的优先级
* getPriority()
* setPriority(int p)
*说明:高优先级的线程会抢占低优先级的执行权,但是只是从概率上,并不是一定优先执行
*
* @author www
* @creat 2022-{MONTH}-{DAY}
*/
public class ThreadMethodTest {
public static void main(String[] args) {
SubThread3 subThread3 = new SubThread3("线程一");
//设置分线程优先级
subThread3.setPriority(Thread.MAX_PRIORITY);
subThread3.start();
//给主线程命名
//设置主线程优先级
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
Thread.currentThread().setName("主线程");
for (int i = 0; i < 100; i++) {
if (i % 2 == 0) {
System.out.println(Thread.currentThread().getName() + ":" + Thread.currentThread().getPriority() + ":" + i);
}
}
System.out.println(subThread3.isAlive());
}
}
class SubThread3 extends Thread {
@Override
public void run() {
for (int i = 0; i < 100; i++) {
if (i % 2 == 0) {
System.out.println(Thread.currentThread().getName() + ":" + Thread.currentThread().getPriority() + ":" + i);
}
}
}
public SubThread3(String name){
super(name);
}
}
package com.www.java02;
/**
* 例子:创建三个窗口卖票,总共一百张
* @author www
* @creat 2022-{MONTH}-{DAY}
*/
public class WindowTest {
public static void main(String[] args) {
MyThread mt = new MyThread();
mt.setName("线程1");
mt.start();
MyThread mt1 = new MyThread();
mt1.setName("线程2");
mt1.start();
MyThread mt2 = new MyThread();
mt2.setName("线程3");
mt2.start();
}
}
class MyThread extends Thread{
private static int sum = 100;
@Override
public void run() {
while(true){
if(sum > 0){
System.out.println(getName() + "卖票:" + sum);
sum--;
}else break;
}
}
}
输出结果:存在线程安全问题