摘要:
Output: Thread-0..if locka.... Thread-1..else lockb.... Thread-0..if locka.... Thread-1..else lockb.... 阅读全文
posted @ 2018-01-18 10:47
darrell007
阅读(142)
评论(0)
推荐(0)
摘要:
一种更好的单例实现方法 饿汉式单例类不能实现延迟加载,不管将来用不用始终占据内存;懒汉式单例类线程安全控制烦琐,而且性能受影响。可见,无论是饿汉式单例还是懒汉式单例都存在这样那样的问题,有没有一种方法,能够将两种单例的缺点都克服,而将两者的优点合二为一呢?答案是:Yes!下面我们来学习这种更好的被称 阅读全文
posted @ 2018-01-18 10:46
darrell007
阅读(298)
评论(0)
推荐(0)
摘要:
线程安全问题产生原因: 1、多个线程操作共享的数据; 2、操作共享数据的线程代码有多条。 当一个线程正在执行操作共享数据的多条代码过程中,其它线程也参与了运算, 就会导致线程安全问题的发生。 class Ticket extends Thread { private int num = 100; p 阅读全文
posted @ 2018-01-18 10:43
darrell007
阅读(158)
评论(0)
推荐(0)
摘要:
1. 线程状态类型 1. 新建状态(New):新创建了一个线程对象。2. 就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。3. 运行状态(Running):就绪状态的线程获取了CPU,执行程序 阅读全文
posted @ 2018-01-18 10:38
darrell007
阅读(180)
评论(0)
推荐(0)
摘要:
ava中如何创建线程? 创建线程的方式一:继承Thread类 步骤: 1、定义一个继承于Thread的类; 2、覆盖Thread类中的run方法; 3、直接创建Thread类的子类对象创建线程; 4、调用start方法开启线程。 创建线程的第二种方式:实现Runnable接口 1,定义类实现Runn 阅读全文
posted @ 2018-01-18 10:34
darrell007
阅读(149)
评论(0)
推荐(0)
摘要:
假如说你想复制一个简单变量。很简单: int apples = 5; int pears = apples; 不仅仅是int类型,其它七种原始数据类型(boolean,char,byte,short,float,double.long)同样适用于该类情况。 但是如果你复制的是一个对象,情况就有些复杂 阅读全文
posted @ 2018-01-18 10:31
darrell007
阅读(413)
评论(0)
推荐(0)
摘要:
阅读全文
posted @ 2018-01-18 10:26
darrell007
阅读(87)
评论(0)
推荐(0)
摘要:
什么是进程?当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。而一个进程又是由多个线程所组成的。什么是线程?线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。什么是多线程?多线程是 阅读全文
posted @ 2018-01-18 10:24
darrell007
阅读(156)
评论(0)
推荐(0)
摘要:
Output: 除数不能为0 finally 除数不能为0 finally 最终结论 任何执行try 或者catch中的return语句之前,都会先执行finally语句,如果finally存在的话。如果finally中有return语句,那么程序就return了,所以finally中的return 阅读全文
posted @ 2018-01-18 10:22
darrell007
阅读(134)
评论(0)
推荐(0)
摘要:
1. 引子 1. 引子 try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解。不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单、听话。不信?那你看看下面的代码,“猜猜”它执行后的结果会是什么?不要往后看答案、也不许执行代码 阅读全文
posted @ 2018-01-18 10:16
darrell007
阅读(141)
评论(0)
推荐(0)