小露认为多线程问题和集合问题是Java技术应用中的重点,也是作为java学习中必不可或缺的,下面就让小露为大家介绍下多线程和集合的基本用法。
一、Java的多线程
进程:正在执行的程序,表示一个应用程序对应的内存空间。
线程:用于控制进程中运算执行流程的控制单元。
简单来说就是,一个进程中至少有一个线程负责该应用程序的执行。
当一个进程中有了多个线程时,就成为多线程。
多线程有啥好处呢?
多线程的出现的对CPU的提高了效率,提高了CPU的使用率。但是线程过多,会导致CPU的资源耗费,降低性能。
多线程在现实生活中有哪些应用呢
JavaVM本身也是一个多线程的应用程序。
其中,有一个主线程负责java程序运行,至少还有另一个线程垃圾回收线程,负责堆内存的内存管理。常见的多线程程序:下载工具,聊天工具。
Java线程调用
1、线程创建
调用start方法,当调用后线程就具备了执行资格,但是不一定立刻具备执行权,这时处于的状态是临时阻塞状态,就是在等CPU过来对其进行执行。
2、线程运行
线程如果具备了执行资格的同时,还具备了执行权,那么该线程就是在当前正在运行的线程,这时它就处于运行状态。
3、线程冻结。
释放了线程执行权,而且释放了线程的执行资格。当线程执行到sleep方法,或wait方法时,线程就处于这种状态。当sleep时间到,或者被wait的线程,被notify后,线程又重新获取到了执行资格,但是不一定获取到执行权,所以这时会从冻结状态转到临时阻塞状态。
3、线程消亡
当线程调用了stop方法(过时),或者线程执行的代码已经结束了,这时该线程结束,该执行路径在进程中消失。
3、临时阻塞。
线程具备了执行资格,但是没有执行权。
线程中安全问题
当线程代码中有多条语句在操作线程共享的数据。这多条语句被多个线程分开执行时,容易产生数据的错误。
安全问题的解决
在某一个时刻或者时间段,对于多条操作共享数据的代码,只能有一个线程进行执行,执行期间不可以有其他线程进行参与,简单说就是将部分代码加锁。
二、Java的集合
用于存储对象的可变长度的容器。
因为容器中的数据结构不同,所以出现了容器的体系也就是不断的向上抽取。
面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式。
数组虽然也可以存储对象,但长度是固定的;集合长度是可变的。数组中可以存储基本数据类型,集合只能存储对象。
集合类的特点,集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。
集合框架中的常用接口
Collection接口有两个子接口:
List(列表)可存放重复元素,元素存取是有序的。Set(集)不可以存放重复元素,元素存取是无序的。
get(intindex):通过脚标获取元素。
iterator():通过迭代方法获取迭代器对象。
Map集合
Map:一次存入一对元素,以键值对(Key,Value)形式存在,必须保证键的唯一性。
1、添加:put(Kkey,Vvalue):返回的是被覆盖的Value,如果键没有重复,返回的是null。
2、删除:remove(key);clear();
3、获取:valueget(key);
4、判断:booleancontainsKey(key);booleancontainsValue(value);booleanisEmpty();
5、长度:intsize();
6、取出:原理:将map集合转成Set集合后,在通过迭代器取出
Map与Collection的区别
Map与Collection在集合框架中属并列存在。
Map存储的是键值对。
Map存储元素使用put方法,Collection使用add方法。
Map集合没有直接取出元素的方法,而是先转成Set集合,在通过迭代获取元素。
Map集合中键要保证唯一性。
今天Java的多线程与集合的分享就到这里,有不懂的可以随时与小露沟通,通过北京哪家医院看皮肤病白癜风最好哪医院治白癜风比较好