摘要: 在Java虚拟机中,每个对象(object和class)通过某种逻辑关联监视器,每个监视器和一个对象引用相关联,为了实现监视器的互斥功能,每个对象都关联着一把锁。 一旦方法或者代码块被synchronized修饰,那么这个部分就放入了监视器的监视区域,确保一次只有一个线程执行该部分代码,线程必须在获 阅读全文
posted @ 2018-06-18 22:32 Freak_Lew 阅读(547) 评论(0) 推荐(0) 编辑
摘要: 同步方法默认用this或者当前类class对象作为锁。 同步代码可以选择以什么来加锁,比同步方法更细颗粒化,同步代码可以同步有同步问题的部分代码而不是整个方法。 同步方法用关键字synchronized修饰方法,同步代码主要修饰需要进行同步的代码块,用synchronized(object){代码内 阅读全文
posted @ 2018-06-18 21:55 Freak_Lew 阅读(1434) 评论(0) 推荐(0) 编辑
摘要: 1、新建(new):新建一个线程对象。 2、可运行状态(runnable):线程对象创建后,其他线程调用该对象的start()方法,该状态的线程位于可运行线程池中,等待线程调度选中,获取CPU使用权。 3、运行状态(running):可运行状态的线程获取到了cpu时间片(timeslice),执行程 阅读全文
posted @ 2018-06-18 16:21 Freak_Lew 阅读(1688) 评论(0) 推荐(0) 编辑
摘要: 创建线程有四种不同的方式: 1、继承Thread类 2、实现Runnable接口 3、应用程序可以使用Executor框架来创建线程池 4、实现Callable接口 我更喜欢实现Runnable接口,因为这样不需要继承Thread类。在应用设计中已经继承了别的对象的情况下,这需要多继承,而Java只 阅读全文
posted @ 2018-06-17 22:27 Freak_Lew 阅读(652) 评论(0) 推荐(0) 编辑
摘要: 进程是执行着的程序,线程是进程的一个执行序列。一个进程可以有多个线程,线程有称为轻量级的进程。 线程的划分小于进程,线程隶属于进程。进程是程序的一个动态形式,是CPU、内存等资源占用的基本单位,而线程是不能拥有这些资源的。进程之间相互独立,通信比较困难。线程之间有共享的一块内存区域,通信比较方便。进 阅读全文
posted @ 2018-06-17 21:55 Freak_Lew 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 值传递 值传递一般是基本数据类型的传递,传递的是该变量的一个副本,改变副本不影响原变量。 引用传递 引用传徒一般是引用数据类型的传递,传递的是该对象地址的一个副本,并且不是原对象本身。 一般情况下,Java内的基本数据类型的传递都是值传递,Java内的引用数据类型的传递都是引用传递。 阅读全文
posted @ 2018-06-17 16:07 Freak_Lew 阅读(545) 评论(0) 推荐(0) 编辑
摘要: 从设计层面讲,抽象是类的抽象,是一种模版设计,接口是行为抽象,是一种行为规范。 抽象类可以存在抽象方法和非抽象方法,接口只能存在抽象方法。 类只可以继承一个抽象类,但是可以实现多个接口。 抽象类声明的变量可以是非final的,接口声明的变量默认为final的。 抽象类的成员函数可以为public、p 阅读全文
posted @ 2018-06-17 15:50 Freak_Lew 阅读(121) 评论(0) 推荐(0) 编辑
摘要: Java中类不支持多继承,只支持单继承(即一个类只有一个父类)。 但是java中的接口支持多继承,,即一个子接口可以有多个父接口。(接口的作用是用来扩展对象的功能,一个子接口继承多个父接口,说明子接口扩展了多个功能,当类实现接口时,类就扩展了相应的功能)。 Java只支持单继承是出于安全性考虑,如果 阅读全文
posted @ 2018-06-17 11:17 Freak_Lew 阅读(394) 评论(0) 推荐(0) 编辑
摘要: 什么是构造方法? 当新对象被创建的时候,构造方法就会被调用。每一个类都有构造方法,如果程序员没有给类提供构造方法,Java编译器会为这个类创建一个默认的构造方法。 什么是构造方法重载? 构造方法重载跟方法重载很相似,可以为一个类创建多个构造方法,每一个构造方法必须有它自己唯一的参数列表。 什么是复制 阅读全文
posted @ 2018-06-16 20:14 Freak_Lew 阅读(3800) 评论(0) 推荐(0) 编辑
摘要: 方法覆盖也称为重写,重写即子类重新定义了父类的方法。 重写: 1、重写的方法必须与原方法有相同的方法名、参数列表和返回值类型(Java SE5之后返回值类型可以是其类型的子类型) 2、被重写的方法不能是final类型,因为final类型无法重写 3、被重写的方法不能是private,因为privat 阅读全文
posted @ 2018-06-16 17:09 Freak_Lew 阅读(3070) 评论(0) 推荐(0) 编辑