随笔分类 - Java-Core
摘要:使用synchronized关键字去控制对某个方法的并发调用。 某一时段内,只能有一个线程可以读取该方法。 其他线程需要等待前面线程调用完毕后方可调用。 不过,静态方法有着不同的行为。 虽然也是每次只能有一个线程调用它,但是另一个线程可以调用该类对象的其他非静态方法。 这一点需要注意,因为如果2个线
阅读全文
摘要:工厂模式是面向对象编程世界中最有用的设计模式。 它是一个创新型的模式,目标是开发一个对象,这个对象的任务是去创建其他类对象。这样一来,如果我们想创建某些类的对象就不需要使用new关键字。好处有以下几点: 1.容易改变对象的类或者创建这些对象的方式; 2.容易限制所创建的对象。例如,我们只能创建N个某
阅读全文
摘要:第8个例子讲了如何在线程中捕捉未检查异常,本例将介绍如何在线程组中处理未检查异常。 Task.java package com.dylan.thread.ch1.c11.task; import java.util.Random; /** * Class that implements the co
阅读全文
摘要:并发API提供的一个有趣功能是可以将多个线程组成一个组。 这样我们就能将这一组线程看做一个单元并且提供改组内线程对象的读取操作。例如你有一些线程在执行同样的任务并且你想控制他们,不考虑有多少个线程仍在运行,一个打断动作将会打断所有组内线程的执行。 Java提供了一个ThreadGroup类来表示一组
阅读全文
摘要:并发程序一个重要方面就是共享数据。 这一点在继承了Thread类或实现了Runnable接口的对象中有着特殊的重要性。 如果你创建了一个实现了Runnable接口的类对象并且用这个对象开启了N个线程对象,那么所有这些线程对象共享同样的属性。这意味着,如果你再某一线程中修改了属性值,所有其他线程将都能
阅读全文
摘要:java中有两类异常: 已检查异常:这类异常编译器要求开发者必须在代码中通过throws去处理。 例如:IOException和ClassNotFoundException。 未检查异常:不必显式的在代码重处理。例如:NumberFormatException。所有派生自Error和RuntimeE
阅读全文
摘要:Java有一种特殊线程叫守护(后台)线程。 1.这类线程拥有非常低的优先级且通常只是在没有其他线程运行的情况下执行。 2.其通常作为无线循环服务去执行某项任务。 3.不能让他们去执行重要任务因为你不知道他们什么时候获得CPU时间或者何时运行结束。 4.一个很典型的案例就是Java的垃圾收集器。 本例
阅读全文
摘要:有时我们需要等到某个线程执行完毕。例如,我可能有一个线程来初始化资源完毕然后其他线程才能开始执行。 谓词,我们可以使用Thread类的join()方法。 本例中,我们将学习使用这个方法。 DataSourcesLoader.java package com.dylan.thread.ch1.c06;
阅读全文
摘要:有时候我们需要让线程在一段时间内不做任何事。例如某线程每个一小时检测一下传感器,剩余的时间不做任何事。 我们可以使用sleep()方法使线程睡眠,此期间不占用计算机资源。 这个方法接受一个整数表示睡眠的毫秒数。 睡眠结束后,JVM将从新分配其CPU时间。另一种睡眠方式是使用TimeUnit枚举元素的
阅读全文
摘要:Java提供了InterruptedException异常,当我们检测到线程被打断时可以抛出并在run()方法中进行捕捉。 本例中,我们将开发一个程序以实现根据文件名称在指定文件夹(包括其子目录)中搜索它。 以此来介绍如何使用InterruptedException异常。 FileSearch.ja
阅读全文
摘要:一般来讲一个java程序如果运行着多个线程,那么只有在这些线程都运行完毕后才会终止。 但有时候,我们需要去结束某个线程或者取消某个任务。此时就用到了Java线程的打断机制,即interruption。 本例中,我们将开发一个程序创建线程,5秒后将强制打断它。 PrimeGenerator.java
阅读全文
摘要:常用线程属性 ID: 每个线程的唯一标识; Name: 线程名称; Priority: 线程优先级,从1-10,数字越大优先级越高;不推荐改变线程优先级; Status: 线程状态,包含6种状态:new, runnable, blocked, waiting, time waiting, termi
阅读全文
摘要:从这一篇开始写Java并发编程实例,内容都翻译整理自书籍:《Java 7 Concurrency Cookbook》 谈到线程,无法逃避的一个问题就是: 并发(concurrency)和并行(parallellism)区别: 解释一:并发是指两个或多个事件在同一时间间隔发生;并行是指两个或者多个事件
阅读全文
摘要:原文链接:https://my.oschina.net/shipley/blog/715196 最近碰到读取第三方提供socket接口需要设置超时时间问题,特此记录一下。原文中有几处拼写错误顺便改掉了。 摘要: Java的网络编程Socket常常用于各种网络工具,比如数据库的jdbc客户端,redi
阅读全文
摘要:package com.dylan.practice.interview; /** * 打印九九乘法表 * * @author xusucheng * @create 2018-03-07 **/ public class Multiply99 { public static void main(S
阅读全文
摘要:package com.dylan.practice.interview; /** * 打印杨辉三角 * * 原理 * 1.每个数等于它上方两数之和 * 2.第n行的数字有n个 * * @author xusucheng * @create 2018-03-06 **/ public class Y
阅读全文
摘要:下面是一个利用Timer定时器在每天指定时间执行批处理程序的例子。 有关 java.util.Timer 详细知识请参考API。 值得注意的一点是Timer是单线程顺序执行多个任务的。 package com.dylan; import java.io.IOException; import jav
阅读全文
摘要:ListIterator介绍 一个为list对象设计的迭代器,允许开发人员在2个方向上迭代,修改和获得list迭代位置。 ListIterator 没有所谓当前元素。 它的游标位置总是位于previous() 和next()返回的元素位置。 一个长度为n的list的迭代器有n+1种可能的游标位置,如
阅读全文
摘要:Iterator接口介绍 public interface Iterator<E> iterator 用于迭代集合类型对象,例如: HashMap, ArrayList, LinkedList 等。 Iterator 设计用于在集合框架中取代 Enumeration。 Iterators 和 enu
阅读全文
摘要:Collections类介绍 这个类操作或返回集合的专有静态方法。 它包含多态算法,利用wrappers(封装器)返回指定集合类型的新集合,以及其他一些零散功能。 如果该类的方法引用的集合或类对象为null,会抛出NullPointerException。 这个类还破坏性(destructive)算
阅读全文