很多地方我们都会用到线程,java操作系统的线程本质其实就是,你写了一个线程类,java替你一对一的在操作系统层面创建了一个线程。之前应该是这样的,现在有没有改变还需要看官方的文档。
java种创建线程方式有很多种,最常见,用的最多的,应该就是使用main启动一个线程如下图

上面是执行程序,下面是结果

1main 就是main线程
2.是清除Reference的线程
3. 专门用来调用finalizer方法的程序(关于finalizer方法,我们之前有介绍过)
剩下的就不一一介绍了,有兴趣的自行了解。
1.线程计算机大多数都是多处理核心,如果还是单线程,属实有点浪费。
2.更快的响应时间,在做一些复杂的计算和业务的时候,单线程通常需要花费很久的时间,但是多线程就会快上很多。
3.更好的编程模型,对于多线程的编写java提供了很好的编程模型,开发人员不用考虑如何将其多线程化。
大家应该知道,现在的操作系统会给线程分一个时间片,来决定线程可以使用处理器的时间。而线程的优先级决定了线程可以多分配一些还是少分配一些。
java种的线程也有优先级,但是不一定和操作系统对标的(有的时候会生效,有的时候不生效)。
public class Priority {private static volatile boolean notStart = true;private static volatile boolean notEnd = true;public static void main(String[] args) throws InterruptedException {List list = new ArrayList();for (int i = 0; i < 10; i++) {int prority = i < 5 ? Thread.MIN_PRIORITY : Thread.MAX_PRIORITY;Job job = new Job(prority);list.add(job);Thread thread = new Thread(job,"Thread" + i);thread.setPriority(prority);thread.start();}notStart = false;TimeUnit.SECONDS.sleep(10);notEnd = false;for (Job j : list) {System.out.println("Job priority :" + j.priority + "count:" + j.jobConut);}}static class Job implements Runnable{// 优先级private int priority;// 线程数量private long jobConut;public Job(int priority){this.priority = priority;}@Overridepublic void run() {// 大家一起把资源让出来while (notStart){Thread.yield();}// 大家一起开始执行先让资源再计算while(notEnd){Thread.yield();jobConut++;}}}
}
线程基本有六种状态
1.new ,创建状态
2.runnable 运行状态
3.blocked 阻塞状态
4.waiting 等待状态
5.time_waiting 超时等待状态
6.terminated 终止状态
装填之间的转换,我就不展示了
daemon线程是一种支持型线程,它主要作用于程序种后台调度以及支持性工作。这意味着,当一个java虚拟机种不存在非daemon线程的时候,java虚拟机将会退出。
线程在java中还是比较重要的一部分,我们这里就是对其做个大致的介绍,让大家有一个简单的了解方便后续线程深入的介绍。
上一篇:秋天,我和徐贤、顾晓京代表、刘玉舟、第二宪法一起去镇海大厦参观
下一篇:乐府诗