java多线程哲学家思考吃饭问题
2015-03-05 00:03
387 查看
package test; import java.util.Scanner; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class Test{ static Scanner sc = new Scanner(System.in); static String line; static class chopsticks{ boolean ishold = false; public synchronized void take(){ while(ishold){ try { wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } ishold = true; } synchronized void drop(){ ishold = false; notifyAll(); } } static class thinker extends Thread{ static int id = 0; int mid = id++; chopsticks left; chopsticks right; public thinker(chopsticks l,chopsticks r) { left = l; right = r; } @Override public void run() { while(!interrupted()){ System.out.println("哲学家"+mid+"思考"); left.take(); right.take(); System.out.println("哲学家"+mid+"吃饭"); left.drop(); right.drop(); } } } public static void main(String[] args) { chopsticks[] cs = new chopsticks[10]; for(int i=0;i<10;i++){ cs[i] = new chopsticks(); } for(int i=0;i<10;i++){ new thinker(cs[i], cs[(i+1)%10]).start();; } } }
相关文章推荐
- 透过现象看本质,一个Java多线程问题引出的思考
- JAVA多线程学习--哲学家就餐问题
- 哲学家就餐问题中的JAVA多线程学习
- Java多线程,哲学家就餐问题
- 【Java】同步关键字就解决哲学家吃饭问题
- java多线程--哲学家就餐问题
- 消费者模式java多线程之哲学家进餐问题(5人5筷)
- java 多线程实现 哲学家进餐问题
- Java 多线程-哲学家进餐问题
- 关于java中多线程的问题的一点思考(什么情况下需要考虑到线程,以及线程安全的问题?)
- java 多线程 死锁 哲学家就餐问题
- JAVA多线程学习--哲学家就餐问题
- 哲学家就餐问题的思考(java实现)
- java 多线程 避免死锁 哲学家就餐问题
- JAVA多线程学习--哲学家就餐问题
- Java程序员面试中的多线程问题(转)
- java socket多线程通讯,解决read阻塞问题
- 【我的Java笔记】多线程安全问题 & 同步机制
- 移动端多线程编程高级篇-哲学家吃饭问题
- 【我的Java笔记】多线程_使用Lock锁对象解决线程安全问题