摘要: 这里举个例子讲解,同步synchronized在什么地方加,以及同步的前提:* 1.必须要有两个以上的线程,才需要同步。* 2.必须是多个线程使用同一个锁。* 3.必须保证同步中只能有一个线程在运行,锁加在哪一块代码那么我们要思考的地方有:1.知道我们写的哪些是多线程代码 2.明确共享数据 3.明确... 阅读全文
posted @ 2014-08-06 23:01 积淀 阅读(289) 评论(0) 推荐(0) 编辑
摘要: 上一节售票系统中我们发现,打印出了错票,0,-1,出现了多线程安全问题。我们分析为什么会发生多线程安全问题? 看下面线程的主要代码: @Override public void run() { // TODO Auto-generated method stub while(true){ if(ti 阅读全文
posted @ 2014-08-06 17:43 积淀 阅读(528) 评论(0) 推荐(0) 编辑
摘要: 总结:实现Runnable接口比继承Thread类更有优势: 1.因为java只能单继承,实现Runnable接口可以避免单继承的局限性 2.继承Thread类,多个线程不能处理或者共享同一个资源,但是实现Runnable接口可以处理同一个资源。 下面我们做个测试:验证下。车站的售票系统售票的例子, 阅读全文
posted @ 2014-08-06 14:48 积淀 阅读(1077) 评论(0) 推荐(0) 编辑
摘要: 创建线程的第二中方式:/*** 步骤: 1定义类实现Runnable接口 2.实现Runnable接口中的run方法。 3.通过Thread类建立线程对象,并将Runnable 接口的子类对象作为实际参数传给Thread类的构造方法、 4.调用Thread类的start方法开启线程,并调用Runn... 阅读全文
posted @ 2014-08-06 10:49 积淀 阅读(512) 评论(0) 推荐(0) 编辑
摘要: 创建线程的第一种方式: / * 步骤: * 1.继承Thread类 * 2. 重写Thread的run方法 * 目的:将自定义的代码存储在run方法中,运行自定义线程 * start 1.启动线程,2调用run方法 * 为什么要覆盖run方法? * Threa... 阅读全文
posted @ 2014-08-06 09:48 积淀 阅读(320) 评论(0) 推荐(0) 编辑