766培训网
电脑培训
Java线程有几种状态

Java线程有几种状态

发布时间 :2021-04-06 16:53:25 浏览量:0 收藏
导读:

Java线程是一个动态执行的过程,有一个从产生到死亡的过程,共五种状态:新建(new Thread)—就绪(runnable)—运行(running)—死亡(dead)—堵塞(blocked)。

Java线程有几种状态

Java线程有几种状态

1. 新建(new Thread)。当创建Thread类的一个实例(对象)时,此线程进入新建状态(未被启动)

2. 就绪(runnable)。线程已经被启动,正在等待被分配给CPU时间片,也就是说此时线程正在就绪队列中排队等候得到CPU资源。

3. 运行(running)。线程获得CPU资源正在执行任务(run()方法),此时除非此线程自动放弃CPU资源或者有优先级更高的线程进入,线程将一直运行到结束。

4. 死亡(dead)。当线程执行完毕或被其它线程杀死,线程就进入死亡状态,这时线程不可能再进入就绪状态等待执行。

自然终止:正常运行run()方法后终止。

异常终止:调用stop()方法让一个线程终止运行。

5. 堵塞(blocked)。由于某种原因导致正在运行的线程让出CPU并暂停自己的执行,即进入堵塞状态。

正在睡眠:用sleep(long t) 方法可使线程进入睡眠方式。一个睡眠着的线程在指定的时间过去可进入就绪状态。

正在等待:调用wait()方法。(调用motify()方法回到就绪状态)

被另一个线程所阻塞:调用suspend()方法。(调用resume()方法恢复)。

Java中有哪些不重复的集合

Set:典型实现 HashSet()是一个无序,不可重复的集合

1、Set hashSet = new HashSet();

①HashSet:不能保证元素的顺序;不可重复;不是线程安全的;集合元素可以为 NULL。

②其底层其实是一个数组,存在的意义是加快查询速度。我们知道在一般的数组中,元素在数组中的索引位置是随机的,元素的取值和元素的位置之间不存在确定的关系,因此,在数组中查找特定的值时,需要把查找值和一系列的元素进行比较,此时的查询效率依赖于查找过程中比较的次数。而 HashSet 集合底层数组的索引和值有一个确定的关系:index=hash(value),那么需要要调用这个公式,就能快速的找到元素或者索引。

③对于HashSet:如果两个对象通过 equals() 方法返回 true,这两个对象的 hashCode 值也应该相同。

2、Set linkedHashSet = new LinkedHashSet();

①不可以重复,有序。因为底层采用链表和哈希表的算法。链表保证元素的添加顺序,哈希表保证元素的唯一性。

3、Set treeSet = new TreeSet();

TreeSet:有序;不可重复,底层使用 红黑树算法,擅长于范围查询。

* 如果使用 TreeSet() 无参数的构造器创建一个 TreeSet 对象,则要求放入其中的元素的类必须实现 Comparable 接口,所以在其中不能放入 null 元素。

Map:key-value的键值对,key不允许重复,value可以

1、严格来说Map并不是一个集合,而是两个集合之间的映射关系。

2、这两个集合没每一条数据通过映射关系,我们可以看成是一条数据。即Entry(key,value)。Map可以看成是由多个Entry组成。

3、因为Map集合即没有实现于Collection接口,也没有实现Iterable 接口,所以不能对Map集合进行for-each遍历。

什么是Java标识符

java中的标识符是用户编程时使用的名字,用于给变量、常量、函数、语句块等命名。

Java标识符由数字,字母和下划线(_),美元符号($)组成。在Java中是区分大小写的,而且还要求首位不能是数字。最重要的是,Java关键字不能当作Java标识符。命名规范如下:

1、见名知意即可,不要过长。

2、camel,驼峰原则。

3、包的命名:全部小写,多级包用 . 隔开。

4、类||接口:每个单词的首字母大写。

5、方法||变量: 第一个单词全部小写,第二个单词开始,每个单词首字母大写。

6、常量:全部大写,每个单词之间使用**_**进行分割 GUO_WU_YUAN。