JDK5.0之前就已经有了两种解决线程安全的问题: 同步代码块 同步方法 JDK5.0后新增了一种解决方案: 同步锁 同步的方法虽然能解决线程安全问题,但它带来的坏处就是降低了效率。所以,我们应该尽量减少需要同步的代码块,必不可少的地方才去用同步方法。 我们首先分别用继承Thread以及实现Runnable接口的方法,写出一个含线程安全的程序。 模拟业务:多窗口卖票(使用多线程模拟多个窗口),共有…
在Java中,单例模式分为饿汉式和懒汉式。默认情况下,懒汉式是线程不安全的,懒汉式代码如下: class Singleton { private static Singleton instance = null; private Singleton() { } public static Singleton getInstance () throws InterruptedException { …
读取输入 要想通过控制台进行输入,首先需要构造一个与“标准输入流”System.in关联的Scanner对象。 Scanner scan = new Scanner(System.in); 然后,就可以通过scan的各种方法来读取输入了。 String nextLine() 读取输入的一整行 int nextInt() 读取输入中的单词(以空格隔开),若读取的不是整型,则抛出异常 double n…
I/O是Input/Output的缩写, I/O技术是非常实用的技术,用于处理设备之间的数据传输。如读/写文件,网络通讯等。Java程序中,对于数据的输入/输出操作以 “流(stream)” ” 的方式进行。可以想象两个节点之间连接着一跟管子,两节点之间通过管子来传输数据,而数据在管子里就像是水流一样,从一节点流到另一个节点。 java.io包下提供了各种“流”类和接口,用以获取不同种类的数据,并…
使用FileReader读取文本文件内容 使用Throws方式 void test1() throws IOException { File file = new File("dir/1.txt"); if (!file.exists()) { throw new IOException("File not found"); } FileReader fil…