Java中的多线程(三)----死锁以及生产者消费者模式 死锁的概念“死锁”指的是:多个线程各自占有一些共享资源,并且互相等待其他线程占有的资源才能进行,而导致 两个或者多个线程都在等待对方释放资源,都停止执行的情形。因此, 某一个同步块需要同时拥有“两个以上对象的锁”时,就可能会发生“死锁” 的问题。比如,“化妆线程”需要同时拥有“镜子对象”、“口红对象”才能运行同步块。 那么,实际运行时,“小丫的化妆线程”拥有了“镜子对象”,“大丫的化妆线程”拥有了“口红对象”,都在互相等待对方释放资源,才能化妆。这样,两个线程就形成了互相等待, 无法继续运行的“
Java中的多线程(三)线程同步 什么是线程同步?线程冲突现象同步问题的提出现实生活中,我们会遇到“同一个资源,多个人都想使用”的问题。 比如:教室里,只有一台电脑,多个人都想使用。天然的解决办法就是,在电脑旁边,大家排队。前一人使用完后,后一人再使用线程同步的概念处理多线程问题时,多个线程访问同一个对象,并且某些线程还想修改这个对象。 这时候,我们就需要用到“线程同步”。 线程同步其实就是一种等待机制,多个需要同时访问此对象的线程进入这个对象的等待池形成队列,等待前面的线程使用完毕后,下一个线程再..
Java中的多线程(二)---线程的使用 一、线程的使用1.终止线程如果我们想在一个线程中终止另一个线程我们一般不使用JDK提供的stop()/destroy() 方法(它们本身也被 JDK 废弃了)。通常的做法是提供一个 boolean 型的终止变量,当这个变量值为 false 时,则终止线程的运行。package 包1;import java.io.IOException;/** 终止线程* */public class StopThread implements Runnable{//设置线程开始/终止标识符
Java中的多线程(Thread)(一)概念篇 学习目标 知识点 要求 多线程介绍 了解 线程的创建 掌握 线程的使用 掌握 线程的优先级 掌握 守护线程 掌握 线程同步 掌握 线程并发协作 掌握 一、 多线程介绍 多线程的基本概..
Java中的IO流(一) 从本篇开始我们就开始系统的IO流学习了:学习目标 知识点 要求 IO简介 了解 IO流入门案例 了解 File类的使用 掌握 常用流对象 掌握 Apache IO包 掌握 本章总结 掌握 一、IO简介...
Java中的集合(五)双例集合Map Map接口介绍1.1Map接口特点Map 接口定义了双例集合的存储特征,它并不是 Collection 接口的子接口。双例集合的存储特征是以 key 与 value 结构为单位进行存储。体现的是数学中的函数 y=f(x)感念。Map 与 Collecton 的区别:Collection中的容器,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储。 Map中的容器,元素是成对存在的(理解为现代社会的夫妻)。每个元素由键与值两部分组成,通过键可以找对所对应的值。...
TreeSet集合(五)容器类 TreeSet 是一个可以对元素进行排序的容器。底层实际是用 TreeMap 实现的,内部维持了一个简化版的 TreeMap,通过 key来存储 Set 的元素。 TreeSet内部需要对存储的元素进行排序,因此,我们需要给定排序规则。排序规则实现方式:通过元素自身实现比较规则。 通过比较器指定比较规则。TreeSet的使用1.基本用法:在元素自身实现比较规则时,需要实现 Comparable 接口中的 compareTo 方法,该方法中用来定义比较规则。TreeSet 通过调...
Java中集合(四)之LinkedList类的概述和实现(Java中的双向链表) 1.LinkedList容器类LinkedList底层用双向链表实现的存储。特点:查询效率低,增删效率高,线程不安全。双向链表也叫双链表,是链表的一种,它的每个数据节点中都有两个指针,分别指向前一个节点和后一个节点。 所以,从双向链表中的任意一个节点开始,都可以很方便地找到所有节点。1.1双向链表的介绍class Node<E> { E item; Node<E> next; Node<E> prev.
集合(三):Java中的栈(stack):概述以及应用 1.栈容器的介绍:stack栈容器,是Vector容器的一个子类,它实现了一个标准的后进先出(LIFO:last in first out)2.操作栈的方法:3.栈在Java中的使用:package 栈;import java.util.Stack;public class StackTest { public static void main(String[] args) { Stack<String> stack = new Stack&
Java中的容器类(二):List接口下的ArrayList、Vector容器类的介绍和使用 1.ArrayList容器类ArrayList 是 List 接口的实现类。是 List 存储特征的具体实现。ArrayList 底层是用数组实现的存储。 特点:查询效率高,增删效率低,线程不安全。1.1添加元素package Container;import java.util.ArrayList;import java.util.List;public class ArrayListTest01 { public static void main(String...
Java中的容器集合(一)(初识容器) 一、容器简介容器,是用来容纳物体、管理物体。生活中,我们会用到各种各样的容器。如锅碗瓢盆、 箱子和包等。程序中的“容器”也有类似的功能,用来容纳和管理数据。比如,如下新闻网站的新闻 列表、教育网站的课程列表就是用“容器”来管理:视频课程信息也是使用“容器”来管理:开发和学习中需要时刻和数据打交道,如何组织这些数据是我们编程中重要的内容。我 们一般通过“容器”来容纳和管理数据。事实上,我们前面所学的数组就是一种容器,可以 在其中放置对象或基本类型数据。数组的优...
Java中的泛型 目录一、泛型(Generics)1.泛型简介1.1泛型基本概念1.2泛型的好处1.3类型擦除2.泛型的使用2.1.定义泛型2.2泛型类2.2.1语法结构2.2.2代码示例:2.3泛型接口2.3.1语法结构2.3.2代码示例2.4泛型方法2.4.1非静态方法2.4.2静态方法2.4.3 泛型方法与可变参数2.5通配符和上下界限定2.5.1泛型-无界通配符2.5.2通配符的上线限定3.泛型总结1.基本类型不能用...
Java中的常用类 常用类介绍——包装类基本用法基本数据类型的包装类我们前面学习的八种基本数据类型并不是对象,为了将基本类型数据和对象之间实现互相转化,Java为每一个基本数据类型提供了相应的包装类。包装类基本知识Java是面向对象的语言,但并不是“纯面向对象”的,因为我们经常用到的基本数据类型就不是对象。但是我们在实际应用中经常需要将基本数据转化成对象,以便于操作。比如:将基本数据类型存储到Object[ ]数组或集合中的操作等等。为了解决这个不足,Java在设计类时为每个基本数据类型设计了.
java中的异常处理机制、代码案例、我们该怎样更好的百度我们的异常、Debug调试 目录整体内容大纲:导引问题异常机制本质异常(Exception)的概念异常分类ErrorExceptionRuntimeException运行时异常【示例】NullPointerException异常【示例】ClassCastException异常【示例】ArrayIndexOutOfBoundsException异常【示例】NumberFormatException异常处理异常的方式之一:(捕获异常)try:注意事项catch:...
考研算法必备:Java中的排序和查找算法 Comparable接口排序多个对象做比较,就要有“比较规则”,然后实现排序。事实上,java中排序算法的底层也依赖Comparable接口。Comparable接口中只有一个方法:public int compareTo(Object obj) obj为要比较的对象方法中,将当前对象和obj这个对象进行比较,如果大于返回1,等于返回0,小于返回-1. (此处的1也可以是正整数,-1也可以是负整数)。 compareTo方法的代码也比较固定:package com.Comparab
Java中的数组 学习大纲一维数组一维数组的概念数组的定义:数组是相同类型数据的有序集合。其中,每一个数据称作一个元素,每个元素可以通过一个索引(下标)来访问它们。数组的四个基本特点:1、长度是确定的,数组一旦被确定,长度就不可以被改变;2、其元素类型必须是相同类型的元素,不允许出现混合类型。3、数组类型可以是任何数据类型,包括基本类型和引用类型。4、数组变量属于引用类型,数组也是对象,数组中的元素相当于对象的属性。数组的使用创建数组以及初始化//数组声明方式,...