随笔分类 - java
Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点 。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等 。
摘要:编程思想转换 做什么,而不是怎么做 我们真的希望创建一个匿名内部类对象吗?不。我们只是为了做这件事情而不得不创建一个对象。我们真正希望做的事情是︰将run方法体内的代码传递给 Thread类知晓。 传递一段代码——这才是我们真正的目的。而创建对象只是受限于面向对象语法而不得不采取的一种手段方式。那,
阅读全文
摘要:函数式编程思想概述 在数学中,函数就是有输入量、输出星的一套计算方案,也就是“拿什么东西做什么事情”。相对而言,面向对象过分强调"必须通过对象的形式来做事情”,而函数式思想则尽量忽略面向对象的复杂语法―—强调做什么,而不是以什么形式做。 冗余的Runnable代码 传统写法 当需要启动一个线程去完成
阅读全文
摘要:线程池的概念和原理 思想概述 我们使雨线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执
阅读全文
摘要:包子类&包子铺类 资源类:包子类设置包子的属性皮陷包子的状态:有true,没有false package Demo01.WaitAndNotify; /** * 资源类:包子类设置包子的属性 * 皮 * 陷 * 包子的状态:有true,没有false */ public class BaoZi {
阅读全文
摘要:等待唤醒机制概述 什么是等待唤醒机制 这是多个线程间的一种协作机制。谈到线程我们经常想到的是线程间的竞争( race ),比如去争夺锁,但这并不是故事的全部,线程间也会有协作机制。就好比在公司里你和你的同事们,你们可能存在在晋升时的竞争,但更多时候你们更多是一起合作以完成某些任务。 就是在一个线程进
阅读全文
摘要:Object类中wait带参方法和notifyAll方法 void wait (在其他线程调用此对象的notify()方法或notifyAll()方法前,导致当前线程等待。void wait (long timebut) 在其他线程调用此对象的notify()方法或notifyA11()方法,或者超
阅读全文
摘要:等待唤醒案例分析 Timed Waiting在API中的描述为︰一个正在限时等待另一个线程执行一个(唤醒)动作的线程处于这一状态。单独的去理解这句话,真是玄之又玄,其实我们在之前的操作中已经接触过这个状态了,在哪里呢? 在我们写卖票的案例中,为了减少线程执行太快,现象不明显等问题,我们在run方法中
阅读全文
摘要:Lock锁 java.util.concurrent.locks.Lock机制提供了比synchronized代码块和synchronized方法更广泛的锁定操作,同步代码块/同步方法具有的功能Lock都有,除此之外更强大,更体现面向对象。 Lock锁也称同步锁,加锁与释放锁方法化了,如下: pub
阅读全文
摘要:同步方法 同步方法:使用synchronized修饰的方法,就叫做同步方法,保证A线程执行该方法的时候,其他线程只能在方法外等着。 格式: public class Test { public synchronized void method(){ // 可能回产生线程安全问题的代码 } } pac
阅读全文
摘要:同步代码块 ·同步代码块:synchronized关键字可以用于方法中的某个区块中,表示只对这个区块的资源实行互斥访问。 格式: package Demo01.Sychronized; public class RunnableImpl implements Runnable{ //定义一个多线程共
阅读全文
摘要:线程安全问题的概述 如果有多个线程在同时运行,而这些线程可能会同时运行这段代码。程序每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。 我们通过一个案例,演示线程的安全问题: 电影院要卖票,我们模拟电影院的卖票过程。假设要播放的电影是“葫芦娃大战奥特曼”,
阅读全文
摘要:Thread和Runnable的区别 如果一个类继承Thread ,则不适合资源共享。但是如果实现了Runable接口的话,则很容易的实现资源共享。 总结: 实现Runnable接口比继承Thread类所具有的优势: 1.适合多个相同的程序代码的线程去共享同一个资源。 2.可以避免java中的单继承
阅读全文
摘要:Thread的常用方法_sleep public static void sleep(long millis) :使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行 实现Runable接口 采用 java.lang.Runnable也是非常常见的一种,我们只需要重写run方法即可。 步骤如下: 1
阅读全文
摘要:获取线程名称的方法 获取线程的名称: 1.使用thread类中的方法getname() String getName() 返回该线程的名称. 2.可以先获取到当前正在执行的线程,使用线程中的方法getName()获取线程的名称 static Thead current Thread() 返回当前正在
阅读全文
摘要:随机性打印结果 JVM执行main方法,找OS开辟一条main方法通向cpu的路径 这个路径叫main线程,主线程 cpu通过这个线程,这个路径可以执行main方法 对于cpu而言,就有了两条执行的路径,cpu就有了选择的权力 cpu喜欢谁,就会执行那条路径,我们控制不了cpu 所以就有了程序的随机
阅读全文
摘要:主线程 Java使用java.lang.Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例。每个线程的作用是完成一定的任务,实际上就是执行一段程序流即一段顺序执行的代码。Java使用线程执行体来代表这段程序流。Java中通过继承Thread类来创建并启动多线程的步骤如下∶ 1
阅读全文
摘要:线程概念 线程∶线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程 线程条度
阅读全文
摘要:并发与并行 并发︰指两个或多个事件在同一个时间段内发生。 并行︰指两个或多个事件在同一时刻发生(同时发生)。 进程概念 进程∶是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位﹔系统运行一个程序即是一个
阅读全文
摘要:自定义类异常 概述 为什么需要自定义异常类: 我们说了Java中不同的异常类;分别表示着某一种具体的异常情况,那么在开发中总是有些异常情况是SUN没有定义好的,此时我们根据自己业务的异常情况来定义异常类。例如年龄负数问题,考试成绩负数问题等等。 在上述代码中,发现这些异常都是IJDK内部定义好的,但
阅读全文
摘要:异常注意事项 如果finally有return语句,永远返回finally中的结果,避免该情况.如果父类抛出了多个异常,子类覆盖父类方法时,只能抛出相同的异常或者是他的子集。父类方法没有抛出异常,子类覆盖父类该方法时也不可抛出异常。此时子类产生该异常,只能捕获处理,不能声明抛出在try/catch后
阅读全文