关于线程的优先级:
public class ThreadTest11{
public static void main(String[] args){
//设置主线程的优先级为1
Thread.currentThread().setPriority(1);
System.out.println("最高优先级”+Thread.MAX_PRIORITY);
System.out.println("最低优先级”+Thread.MIN_PRIORITY);
System.out.println("默认优先级”+Thread.NORM_PRIORITY);
//获取当前线程对象,获取当前线程的优先级
Thhread currentThread = Thread.currentThread();
//main线程的默认优先级是:5
System.out.println(currentThread.getName()+"线程的默认优先级是:"+currentThread.getPriority());
Thread t = new Thread(new MyRunnable5());
t.setPriority(10);
t.setName("t");
t.start();
//优先级较高的,只是抢到的cpu时间片相对多一些。
//大概率方向更偏向于优先级比较高的。
for(int i=0;i<10000;i++){
System.out.println(Thread.currentThread().getName()+"-->"+i);
}
}
}
class MyRunnable5 implements Runnable{
public void run(){
//获取线程优先级
System.out.println(Thread.currentThread().getName()+"线程的默认优先级:"+Thread.currentThread);
for(int i=0;i<10000;i++){
System.out.println(Thread.currentThread().getName()+"-->"+i);
}
}
}
让位:当前线程暂停,回到就绪状态,让给其他线程
静态方法:Thread.yield();
public class ThreadTest12{
public static void main(String[] args){
Thread t = new Thread(new MyRunnable6());
t.setName("t");
t.start();
for(int i=0;i<10000;i++){
System.out.println(Thread.currentThread().getName()+"-->"+i);
}
}
}
class MyRunnable6 implements Runnable{
public void run(){
for(int i=0;i<10000;i++){
//每100个让位一次。
if(i%100==0){
Thread.yield(); //当前线程暂停一下,让位给主线程
}
System.out.println(Thread.currentThread().getName()+”-->"+i);
}
}
}
线程合并
public class ThreadTest13{
public static void main(String[] args){
System.out.println("main begin");
Thread t = new Thread(new MyRunnable7());
t.setName("t");
t.start();
//合并线程
try{
t.join(); //t合并到当前线程中,当前线程受阻塞,t线程执行直到结束
}catch(InterruptedException e){
e.printStackTrace();
}
System.out.println("main over");
}
}
class MyRunnable7 implements Runnable{
public void run(){
for(int i=0;i<100;i++){
System.out.println(Thread.currentThread().getName()+"-->"+i);
}
}
}