java例程练习(多线程综合练习[生产者-消费者问题])

摘要: /* * 生产者与消费者问题 * 此问题用到Object类的wait(),notify() * 还要注意一个问题: * sleep()与wait()的区别: * sleep()过程中,对象仍未解锁 * wait ()过程中,对象解锁,其他线程可以访问当前对象,当唤醒时需重新锁定 */ public class Test { public static void main(String[] args) { ThingsStack ts = new ThingsStack(); Producer p = new Producer(ts); Consumer c ... 阅读全文
posted @ 2012-05-05 22:17 spring学习笔记 阅读(223) 评论(0) 推荐(0)

java例程练习(关于线程同步的补充)

摘要: /* * 从运行结果看,当m1()方法被锁定后,m2()方法仍然可以执行。 * 而且b的值被改变。由此可以得出结论: * sychronized 只是防止其定义的代码段被同时调用。 * */ public class Test implements Runnable{ int b = 100; public synchronized void m1() throws Exception { b = 1000; Thread.sleep(5000); System.out.println("b = " + b); } public void m2() ... 阅读全文
posted @ 2012-05-05 20:53 spring学习笔记 阅读(150) 评论(0) 推荐(0)

java例程练习(多线程[死锁问题])

摘要: /* *死锁产生有2个原因: *1,资源竞争 *2,进程间的推进顺序非法 * *程序模拟的是第一个情况 */ public class TestDeadLock implements Runnable { public int flag = 1; static Object o1 = new Object(); static Object o2 = new Object(); public void run() { System.out.println("flag=" + flag); if(flag == 1) { synchronized(o1) { ... 阅读全文
posted @ 2012-05-05 16:00 spring学习笔记 阅读(218) 评论(0) 推荐(0)

java例程练习(多线程[线程同步问题])

摘要: //线程同步问题 public class TestThread implements Runnable{ Timer timer = new Timer(); public static void main(String[] args) { TestThread test = new TestThread(); Thread t1 = new Thread(test); Thread t2 = new Thread(test); t1.setName("t1"); t2.setName("t2"); t1.start(); t2.start(); } 阅读全文
posted @ 2012-05-05 15:26 spring学习笔记 阅读(489) 评论(0) 推荐(0)

java例程练习(多线程[线程的优先级等等])

摘要: //设置线程的优先级 public class TestThread1 { public static void main(String[] args) { Thread t1 = new Thread(new T1()); Thread t2 = new Thread(new T2()); t1.setPriority(Thread.NORM_PRIORITY + 3); t1.start(); t2.start(); } } class T1 implements Runnable { public void run() { for(int i = 0;... 阅读全文
posted @ 2012-05-05 14:34 spring学习笔记 阅读(310) 评论(0) 推荐(0)