摘要: 假设现在系统有两个线程,这两个线程分别代表存款者和取钱者——现在假设系统有一种特殊的要求,系统要求存款者和取钱者不断地重复存款、取钱的动作。而且要求每当存款者将钱存入指定账户后,取钱者就立即取出该笔钱。不允许存款者连续两次存钱,也不允许取钱者连续两次取钱。为了实现这种功能,可以借助Object类提供... 阅读全文
posted @ 2015-04-23 20:29 IT男汉 阅读(401) 评论(0) 推荐(0) 编辑
摘要: 当两个线程相互等待对方释放同步监视器时就会发生死锁,java虚拟机没有监测,也没有采取措施来处理死锁情况,所以多线程编程时应该采取措施避免死锁出现。一旦出现死锁,整个程序既不会发生任何异常,也不会给出任何提示,只是所有线程处于阻塞状态,无法继续。死锁实例: 1 public class DeadLo... 阅读全文
posted @ 2015-04-23 13:16 IT男汉 阅读(850) 评论(0) 推荐(0) 编辑
摘要: 有两种机制防止代码块受并发访问的干扰:1、一个是使用synchronized关键字。2、使用ReentrantLock类。(通过显示定义同步锁对象来实现同步。)同步锁(lock)方法是控制多个线程对共享资源进行访问的工具。通常,锁提供了对共享资源的独占访问,每次只能有一个线程对Lock对象加锁,线程... 阅读全文
posted @ 2015-04-23 11:43 IT男汉 阅读(446) 评论(0) 推荐(0) 编辑
摘要: 有两种机制防止代码块受并发访问的干扰:1、一个是使用synchronized关键字。2、使用ReentrantLock类。(通过显示定义同步锁对象来实现同步。)同步锁(lock)方法是控制多个线程对共享资源进行访问的工具。通常,锁提供了对共享资源的独占访问,每次只能有一个线程对Lock对象加锁,线程... 阅读全文
posted @ 2015-04-23 11:43 IT男汉 阅读(486) 评论(0) 推荐(0) 编辑
摘要: 任何线程进入同步代码块、同步方法之前,必须先获得对同步监视器的锁定,那么何时会释放对同步监视器的锁定呢?程序无法显示释放对同步监视器的锁定,线程会在如下几种情况下释放对同步监视器的锁定。1、当前线程的同步方法、同步代码块执行结束,当前线程即释放同步监视器。2、当前线程在同步代码块、同步方法中遇到br... 阅读全文
posted @ 2015-04-23 10:20 IT男汉 阅读(350) 评论(0) 推荐(0) 编辑
摘要: 1 public class SynchronizedClass1 extends Thread{ 2 private Account account; 3 private double drawbalance; 4 public SynchronizedClass1(St... 阅读全文
posted @ 2015-04-22 14:16 IT男汉 阅读(401) 评论(1) 推荐(0) 编辑
摘要: 1 public class SynchronizedClass extends Thread{ 2 private Account account; 3 private double drawbalance; 4 Object obj; 5 public Sync... 阅读全文
posted @ 2015-04-21 21:28 IT男汉 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 线程同步:当有两个进程并发修改同一文件时就可能造成异常。意思就是当一个线程要改变一个文件的内容时,却sleep了一段时间,这时另一个线程却改变了这个文件的内容。最后就会出现错误的结果。为了解决这个问题,java多线程支持引入了同步监视器来解决这个问题。使用同步监视器的通用方法就是同步代码块。同步代码... 阅读全文
posted @ 2015-04-21 18:51 IT男汉 阅读(260) 评论(1) 推荐(0) 编辑
摘要: 线程死亡:线程会以如下3种方式结束,结束后就处于死亡状态。1、run()或call()方法执行完成,线程正常结束。2、线程抛出一个未捕获的Exception或Error3、直接调用该线程的stop方法结束该线程---该方法容易导致死锁,通常不推荐使用。为了测试某个线程是否已经死亡,可以调用线程对象i... 阅读全文
posted @ 2015-04-21 18:50 IT男汉 阅读(4598) 评论(0) 推荐(0) 编辑
摘要: 线程的控制:Java中的线程支持提供了一些便捷的工具方法,通过这些便捷的工作方法可以更好的控制线程的执行。一、join线程:Thread提供了让一个线程等待另一个线程完成的方法——join()方法。当某个程序执行流中调用其他线程的join方法时,调用线程将被阻塞,直到被join方法加入的join线程... 阅读全文
posted @ 2015-04-21 18:49 IT男汉 阅读(359) 评论(0) 推荐(0) 编辑