Topic: 一个线程的简单问题(对大虾来说的), |
Print this page |
1.一个线程的简单问题(对大虾来说的), | Copy to clipboard |
Posted by: xiaoxiaoniaoge Posted on: 2005-11-08 22:15 怎么写下面的代码 【代码2】 // 创建zhang,Bank对象为zhang的目标对象 【代码4】 // 创建keven,Bank对象为keven的目标对象 class Bank implements Runnable { int money=100; // 声明一个int型变量money,初值为100 Thread zhang,keven; Bank() { 【代码2】 // 创建zhang,Bank对象为zhang的目标对象 zhang.setName("会计"); // 设置zhang线程的名字为“会计” 【代码4】 // 创建keven,Bank对象为keven的目标对象 keven.setName("出纳"); // 设置keven线程的名字为“出纳” } public void run() { int i=0; // 声明一个int类型变量i,初值为0 while(true) { if (Thread.currentThread().getName().equals("会计")) // 判断线程zhang是否正在占有CUP资源 { i=i+1; money=money+1; System.out.printf("\n%s将money的值改为%d\t",zhang.getName(),money); System.out.printf("%s的局部变量i=%d\n",zhang.getName(),i); if(i>=6) { System.out.printf("%s线程进入死亡状态\n",zhang.getName()); break; // 使得线程zhang进入死亡状态 } try{ Thread.sleep(1000); } catch(InterruptedException e) { } } else if(Thread.currentThread().getName().equals("出纳")) // 判断线程keven是否正在占有CUP资源 { i=i-1; money=money-1; System.out.printf("\n%s将money的值改为%d\t",keven.getName(),money); System.out.printf("%s的局部变量i=%d\n",keven.getName(),i); if(i<=-6) { System.out.printf("%s线程进入死亡状态\n",keven.getName()); break; // 使得线程keven进入死亡状态 } try{ Thread.sleep(1000); } catch(InterruptedException e) { } } } } } class BankExample { public static void main(String args[ ]) { Bank bank=new Bank(); bank.zhang.start(); bank.keven.start(); } } |
2.Re:一个线程的简单问题(对大虾来说的), [Re: xiaoxiaoniaoge] | Copy to clipboard |
Posted by: wallacer Posted on: 2005-11-09 10:30 class Bank implements Runnable { int money=100; // 声明一个int型变量money,初值为100 Thread sefThread; public Bank(String kind) { sefThread = new Thread(this); sefThread.setName(kind); } public void start() { sefThread.start(); } public void run() { int i=0;// 声明一个int类型变量i,初值为0 while(true) { if (Thread.currentThread().getName().equals("会计")) { // 判断线程zhang是否正在占有CUP资源 i=i+1; money=money+1; System.out.printf("\n%s将money的值改为%d\t", sefThread.getName(),money); System.out.printf("%s的局部变量i=%d\n",sefThread.getName(),i); if(i>=6) { System.out.printf("%s线程进入死亡状态\n",sefThread.getName()); break; // 使得线程zhang进入死亡状态 } try { Thread.sleep(1000); } catch(InterruptedException e) { } } // 判断线程keven是否正在占有CUP资源 else if(Thread.currentThread().getName().equals("出纳")) { i=i-1; money=money-1; System.out.printf("\n%s将money的值改为%d\t", sefThread.getName(),money); System.out.printf("%s的局部变量i=%d\n",sefThread.getName(),i); if(i<=-6) { System.out.printf("%s线程进入死亡状态\n",sefThread.getName()); break; // 使得线程keven进入死亡状态 } try { Thread.sleep(1000); } catch(InterruptedException e) { } } } } } public class BankExample { public static void main(String args[]) { Bank zhang = new Bank("会计"); Bank keven = new Bank("出纳"); zhang.start(); keven.start(); } } 在实现Runnable接口的时候,要注意的一个问题就是实现Runnable借口的类本身不是一个Thread,我自己的经验就是在该类中保存一个selThread,另外家一个start()方法,这样看起来比较像一个Thread,初始化后直接使用start()后就可以启动线程了!哈哈 |
3.Re:一个线程的简单问题(对大虾来说的), [Re: xiaoxiaoniaoge] | Copy to clipboard |
Posted by: wallacer Posted on: 2005-11-09 10:34 You can read this book "Java Threads Third Edition"! |
4.Re:一个线程的简单问题(对大虾来说的), [Re: xiaoxiaoniaoge] | Copy to clipboard |
Posted by: xiaoxiaoniaoge Posted on: 2005-11-09 20:25 wallacer:感谢哈,我从你的答案中得到了我的答案。。。 keven=new Thread(this); zhang=new Thread(this); 就可以运行了 |
5.Re:一个线程的简单问题(对大虾来说的), [Re: xiaoxiaoniaoge] | Copy to clipboard |
Posted by: guo849 Posted on: 2005-11-21 21:39 class Bank implements Runnable { int money=100; Thread zhang,keven; Bank() { zhang=new Thread(this); zhang.setName("会计"); keven=new Thread(this); keven.setName("出纳"); } public void run() { int i=0; while(true) { if(Thread.currentThread()==zhang) { i=i+1; money=money+1; System.out.print(zhang.getName()+"将money的值改为"+money+" "); System.out.println(zhang.getName()+"的局部变量i="+i); if(i>=6) { System.out.println(zhang.getName()+"线程进入死亡状态"); return; } try{ Thread.sleep(4000); } catch(InterruptedException e) { } } else if(Thread.currentThread()==keven) { i=i-1; money=money-1; System.out.print(keven.getName()+"将money的值改为"+money+" "); System.out.println(keven.getName()+"的局部变量i="+i); if(i<=-6) { System.out.println(keven.getName()+"线程进入死亡状态"); return; } try{ Thread.sleep(4000); } catch(InterruptedException e) { } } } } } |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |