[4.1.1] 什么是线程
public class MultyThread {
public static void main(String[] args) {
ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean();
ThreadInfo[] threadInfos = threadMXBean.dumpAllThreads(false, false);
for (ThreadInfo info : threadInfos) {
System.out.println(
"ThreadId=[" + info.getThreadId() + "], " +
"ThreadName=[" + info.getThreadName() + "]");
}
}
}
ThreadId=[6], ThreadName=[Monitor Ctrl-Break]
ThreadId=[5], ThreadName=[Attach Listener]
ThreadId=[4], ThreadName=[Signal Dispatcher] // 负责分发内部事件
ThreadId=[3], ThreadName=[Finalizer] // 负责调用Finalizer方法。
ThreadId=[2], ThreadName=[Reference Handler] // 负责处理引用
ThreadId=[1], ThreadName=[main] // 主线程
[4.1.3] 线程优先级
package com.alisa.multythreads;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
/**
* 线程优先级
*/
public class Priority {
private static volatile boolean notStart = true;
private static volatile boolean notEnd = true;
public static void main(String[] args) throws InterruptedException {
List<Job> jobs = new ArrayList<>();
for (int i = 0; i < 10; i++) {
int priority = (i > 5 ? Thread.MIN_PRIORITY: Thread.MAX_PRIORITY);
Job job = new Job(priority);
Thread thread = new Thread(job);
thread.setPriority(priority);
thread.start();
jobs.add(job);
}
notStart = false;
TimeUnit.SECONDS.sleep(10);
notEnd = false;
for (Job job : jobs) {
System.out.println("job priority = " + job.priority + " ,jobCount= [" + job.jobCount + "]");
}
}
private static class Job implements Runnable {
private long jobCount = 0;
private int priority;
public Job(int priority){
this.priority = priority;
}
@Override
public void run() {
while (notStart) {
Thread.yield();
}
while (notEnd) {
Thread.yield();
jobCount++;
}
}
}
}
job priority = 10 ,jobCount= [22919301]
job priority = 10 ,jobCount= [22845393]
job priority = 10 ,jobCount= [23392615]
job priority = 10 ,jobCount= [23147693]
job priority = 10 ,jobCount= [24327830]
job priority = 10 ,jobCount= [22514344]
job priority = 1 ,jobCount= [23072747]
job priority = 1 ,jobCount= [22916281]
job priority = 1 ,jobCount= [21717784]
job priority = 1 ,jobCount= [22296746]