随笔分类 - Java学习
摘要:先综述个结论: 一般说的synchronized用来做多线程同步功能,其实synchronized只是提供多线程互斥,而对象的wait()和notify()方法才提供线程的同步功能。 一般说synchronized是加锁,或者说是加对象锁,其实对象锁只是synchronized在实现锁机制中的一种锁
阅读全文
摘要:synchronized 方法控制对类成员变量的访问:每个类实例对应一把锁,每个 synchronized 方法都必须获得调用该方法的类实例的锁方能执行,否则所属线程阻塞,方法一旦执行,就独占该锁,直到从该方法返回时才将锁释放,此后被阻塞的线程方能获得该锁,重新进入可执行状态。 wait()/not
阅读全文
摘要:/* wait 和 sleep 区别? 1,wait可以指定时间也可以不指定。 sleep必须指定时间。 2,在同步中时,对cpu的执行权和锁的处理不同。 wait:释放执行权,释放锁。 sleep:释放执行权,不释放锁。 */ class Demo { void show() { synchronized(this)// ...
阅读全文
摘要:/* 生产者,消费者。 多生产者,多消费者的问题。 if判断标记,只有一次,会导致不该运行的线程运行了。出现了数据错误的情况。 while判断标记,解决了线程获取执行权后,是否要运行! notify:只能唤醒一个线程,如果本方唤醒了本方,没有意义。而且while判断标记+notify会导致死锁。 n
阅读全文
摘要:Output: Thread-0...生产者...61498 Thread-1...消费者...61498 Thread-0...生产者...61499 Thread-1...消费者...61499 Thread-0...生产者...61500 Thread-1...消费者...61500 Thre
阅读全文
摘要:Output: Mike...nan Mike...nan Mike...nan Mike...nan Mike...nan Mike...nan Mike...nan Mike...nan Mike...nan Mike...nan 丽丽...女 丽丽...女 丽丽...女 丽丽...女 丽丽..
阅读全文
摘要:Output: Thread-0..if locka.... Thread-1..else lockb.... Thread-0..if locka.... Thread-1..else lockb....
阅读全文
摘要:一种更好的单例实现方法 饿汉式单例类不能实现延迟加载,不管将来用不用始终占据内存;懒汉式单例类线程安全控制烦琐,而且性能受影响。可见,无论是饿汉式单例还是懒汉式单例都存在这样那样的问题,有没有一种方法,能够将两种单例的缺点都克服,而将两者的优点合二为一呢?答案是:Yes!下面我们来学习这种更好的被称
阅读全文
摘要:线程安全问题产生原因: 1、多个线程操作共享的数据; 2、操作共享数据的线程代码有多条。 当一个线程正在执行操作共享数据的多条代码过程中,其它线程也参与了运算, 就会导致线程安全问题的发生。 class Ticket extends Thread { private int num = 100; p
阅读全文
摘要:1. 线程状态类型 1. 新建状态(New):新创建了一个线程对象。2. 就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。3. 运行状态(Running):就绪状态的线程获取了CPU,执行程序
阅读全文
摘要:ava中如何创建线程? 创建线程的方式一:继承Thread类 步骤: 1、定义一个继承于Thread的类; 2、覆盖Thread类中的run方法; 3、直接创建Thread类的子类对象创建线程; 4、调用start方法开启线程。 创建线程的第二种方式:实现Runnable接口 1,定义类实现Runn
阅读全文
摘要:假如说你想复制一个简单变量。很简单: int apples = 5; int pears = apples; 不仅仅是int类型,其它七种原始数据类型(boolean,char,byte,short,float,double.long)同样适用于该类情况。 但是如果你复制的是一个对象,情况就有些复杂
阅读全文
摘要:什么是进程?当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。而一个进程又是由多个线程所组成的。什么是线程?线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。什么是多线程?多线程是
阅读全文
摘要:Output: 除数不能为0 finally 除数不能为0 finally 最终结论 任何执行try 或者catch中的return语句之前,都会先执行finally语句,如果finally存在的话。如果finally中有return语句,那么程序就return了,所以finally中的return
阅读全文
摘要:1. 引子 1. 引子 try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解。不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单、听话。不信?那你看看下面的代码,“猜猜”它执行后的结果会是什么?不要往后看答案、也不许执行代码
阅读全文
摘要:1.Throwable 类是 Java 语言中所有错误或异常的超类。它的两个子类是Error和Exception;2.Error 是 Throwable 的子类,用于指示合理的应用程序不应该试图捕获的严重问题。大多数这样的错误都是异常条件。虽然 ThreadDeath 错误是一个“正规”的条件,但它
阅读全文
摘要:异常的注意事项: 1,子类在覆盖父类方法时,父类的方法如果抛出了异常, 那么子类的方法只能抛出父类的异常或者该异常的子类。 2,如果父类抛出多个异常,那么子类只能抛出父类异常的子集。 简单说:子类覆盖父类只能抛出父类的异常或者子类或者子集。 注意:如果父类的方法没有抛出异常,那么子类覆盖时绝对不能抛
阅读全文
摘要:/* 异常处理的捕捉形式: 这是可以对异常进行针对性处理的方式。 具体格式是: try { //需要被检测异常的代码。 } catch(异常类 变量)//该变量用于接收发生的异常对象 { //处理异常的代码。 } finally { //一定会被执行的代码。 } 异常处理的原则: 1,函数内容如果抛
阅读全文

浙公网安备 33010602011771号