黑马程序员Java培训、Android培训-Java 学习过程记录_多线程3
2011-03-29 07:42
906 查看
线程学习代码备份:
class Producer implements Runnable{ Q q; public Producer(Q q) { this.q = q; } public void run() { int i = 0; while(true) { /*synchronized(q) { if(q.bFull) try{q.wait();}catch(Exception e){} if(i == 0) { q.name = "zhangsan"; try{Thread.sleep(1);}catch(Exception e){} q.sex = "male"; } else { q.name = "lisi"; q.sex = "female"; } bFull = true; q.notify(); }*/ if(i == 0) q.put("zhangsan","male"); else q.put("lisi","female"); i = (i+1)%2; } }}class Consumer implements Runnable{ Q q; public Consumer(Q q) { this.q = q; } public void run() { while(true) { /*synchronized(q) { if(!q.bFull) q.wait(); System.out.println(q.name); System.out.println(":" + q.sex); bFull = false; q.notify(); }*/ q.get(); } }}class Q //将变量和实现同步控制块的方法封装在一起,有利于简化程序结构,更符合面向对象的思想;{ String name = "unknown"; String sex = "unknown"; boolean bFull = false; public synchronized void put(String name,String sex) //线程同步控制 { if(bFull) try{wait();}catch(Exception e){} //线程通信 this.name = name; //try{Thread.sleep(1);}catch(Exception e){} this.sex = sex; bFull = true; notify(); } public synchronized void get() { if(!bFull) try{wait();}catch(Exception e){} System.out.print(name); System.out.println(":"+sex); bFull = false; notify(); } }class ThreadCommunation{ public static void main(String [] args) { /*Q q = new Q(); new Thread(new Producer(q)).start(); new Thread(new Consumer(q)).start();*/ /*Thread t = new Thread(new Threadtest());*/ ThreadTest tt = new ThreadTest(); new Thread(tt).start(); //将tt作为线程的参数; for(int i=0;i<100;i++) { if(i == 50) tt.stopMe(); System.out.println("main() is running"); } }}class ThreadTest implements Runnable{ private boolean bStop = false; public void stopMe() { bStop = true; } public void run() { while(!bStop) { System.out.println(Thread.currentThread().getName()+"is running"); } }}
class Producer implements Runnable{ Q q; public Producer(Q q) { this.q = q; } public void run() { int i = 0; while(true) { /*synchronized(q) { if(q.bFull) try{q.wait();}catch(Exception e){} if(i == 0) { q.name = "zhangsan"; try{Thread.sleep(1);}catch(Exception e){} q.sex = "male"; } else { q.name = "lisi"; q.sex = "female"; } bFull = true; q.notify(); }*/ if(i == 0) q.put("zhangsan","male"); else q.put("lisi","female"); i = (i+1)%2; } }}class Consumer implements Runnable{ Q q; public Consumer(Q q) { this.q = q; } public void run() { while(true) { /*synchronized(q) { if(!q.bFull) q.wait(); System.out.println(q.name); System.out.println(":" + q.sex); bFull = false; q.notify(); }*/ q.get(); } }}class Q //将变量和实现同步控制块的方法封装在一起,有利于简化程序结构,更符合面向对象的思想;{ String name = "unknown"; String sex = "unknown"; boolean bFull = false; public synchronized void put(String name,String sex) //线程同步控制 { if(bFull) try{wait();}catch(Exception e){} //线程通信 this.name = name; //try{Thread.sleep(1);}catch(Exception e){} this.sex = sex; bFull = true; notify(); } public synchronized void get() { if(!bFull) try{wait();}catch(Exception e){} System.out.print(name); System.out.println(":"+sex); bFull = false; notify(); } }class ThreadCommunation{ public static void main(String [] args) { /*Q q = new Q(); new Thread(new Producer(q)).start(); new Thread(new Consumer(q)).start();*/ /*Thread t = new Thread(new Threadtest());*/ ThreadTest tt = new ThreadTest(); new Thread(tt).start(); //将tt作为线程的参数; for(int i=0;i<100;i++) { if(i == 50) tt.stopMe(); System.out.println("main() is running"); } }}class ThreadTest implements Runnable{ private boolean bStop = false; public void stopMe() { bStop = true; } public void run() { while(!bStop) { System.out.println(Thread.currentThread().getName()+"is running"); } }}
相关文章推荐
- 黑马程序员Java培训、Android培训-Java 学习过程记录_多线程2
- 黑马程序员Java培训、Android培训-Java 学习过程记录_多线程
- 黑马程序员Java培训、Android培训_Java 学习过程记录_开发前奏
- 黑马程序员Java培训、Android培训-Java 学习过程记录_面向对象下2
- 黑马程序员Java培训、Android培训-Java 学习过程记录_面向对象下
- 黑马程序员Java培训、Android培训-Java 学习过程记录_JavaAPI-1
- 黑马程序员Java培训、Android培训-Java 学习过程记录_面向对象上2
- 黑马程序员Java培训、Android培训-Java 学习过程记录_面向对象下3
- 黑马程序员Java培训、Android培训-Java 学习过程记录_语言基础3
- 黑马程序员Java培训、Android培训-Java 学习过程记录_JavaAPI
- 黑马程序员Java培训、Android培训_Java 学习过程记录_语言基础2
- 黑马程序员Java培训、Android培训-Java 学习过程记录_面向对象上
- 黑马程序员Java培训和Android培训:多线程
- Android学习记录(6)—将java中的多线程下载移植到Android中(即多线程下载在Android中的使用)③
- 本博客纯粹记录自己的java,Android学习过程
- Android学习记录(6)—将java中的多线程下载移植到Android中(即多线程下载在Android中的使用)③
- 黑马程序员_Java 学习过程记录_JavaAPI-2
- Android学习记录(5)—在java中学习多线程下载之断点续传②
- Android学习记录(5)—在java中学习多线程下载之断点续传②
- Android学习记录(5)—在java中学习多线程下载之断点续传②