求一个Java多线程例子 求一个Java多线程例子 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //这个例子是培训课上的 讲述的时间定制 不过已经封装了 可以自己查API package com.itcase.heima2;import java.util.Date;import java.util.Timer;import java.util.TimerTask;public class TraditionalTimerTest { /**10后爆炸 * @param args */ public static void main(String[] args) { new Timer().schedule(new TimerTask() { public void run() { System.out.println("bombing"); } }, 10000,3000); while (true) { System.out.println(new Date().getSeconds()); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } }} http://wenku.baidu.com/view/f214392fb4daa58da0114a32.html例子还挺多的 你可以看看 写出一组模拟生产者/消费者的协作程序 其中包括一个WoTou.java,代表消息 一个MsgQueue.java,为一个队列,提供put(Message msg)方法和get()方法 一个Produer.java,为生产者线程,在其run方法中每隔1秒产生一个Message对像并放入MsgQueue队列 一个Consumer.java为消费者线程,在其run方法中不断从MsgQueue队列中获取Message对像,并显示在屏幕上 一个TestMain.java,在其main方法中,启动2个Produer线程和2个消费者线程. 要求: 对于MsgQueue.java,队列的长度为10,当消息超过10个时,put()方法需要阻塞:当消息队列为空时, get()方法需要阻塞。 public class ProducerConsumer { public static void main(String[] args) { SyncStack ss = new SyncStack(); Producer p1= new Producer(ss,"p1"); Consumer c1= new Consumer(ss,"c1"); Producer p2= new Producer(ss,"p2"); Consumer c2= new Consumer(ss,"c2"); } } class WoTou<T> { int id; WoTou(int id) { this.id = id; } public String toString() { return "WoTou : " + id; } } class SyncStack { int index = 0; WoTou[] arrWT = new WoTou[6]; public void push(WoTou wt) { while(index == arrWT.length) { try { this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } this.notifyAll(); arrWT[index] = wt; index ++; } public WoTou pop() { while(index == 0) { try { this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } this.notifyAll(); index--; return arrWT[index]; } } class Producer implements Runnable { SyncStack ss = null; String a; Producer(SyncStack ss,String a) { this.ss = ss; this.a= a; Thread t=new Thread(this,a); t.start(); } public void run() { for(int i=0; i<10; i++) { synchronized(ss){ WoTou wt = new WoTou(i); ss.push(wt); System.out.println(a+" 生产了:" + wt);} try { Thread.sleep((int)(Math.random() * 200)); } catch (InterruptedException e) { e.printStackTrace(); } } } } class Consumer implements Runnable { SyncStack ss = null; String a; Thread t; Consumer(SyncStack ss,String a) { this.ss = ss; this.a= a; t=new Thread(this,a); t.start(); } public void run() { for(int i=0; i<10; i++) { synchronized(ss){ WoTou wt = ss.pop(); System.out.println(a+" 消费了: " + wt);} try { Thread.sleep((int)(Math.random() * 1000)); } catch (InterruptedException e) { e.printStackTrace(); } } } } p1 生产了:WoTou : 0 p2 生产了:WoTou : 0 p3 生产了:WoTou : 0 c1 消费了: WoTou : 0 c1 消费了: WoTou : 0 p3 生产了:WoTou : 1 c1 消费了: WoTou : 1 c1 消费了: WoTou : 0 p3 生产了:WoTou : 2 p1 生产了:WoTou : 1 c1 消费了: WoTou : 1 p2 生产了:WoTou : 1 p2 生产了:WoTou : 2 c1 消费了: WoTou : 2 p2 生产了:WoTou : 3 p3 生产了:WoTou : 3 c1 消费了: WoTou : 3 p3 生产了:WoTou : 4 p2 生产了:WoTou : 4 c1 消费了: WoTou : 4 c1 消费了: WoTou : 4 p1 生产了:WoTou : 2 c1 消费了: WoTou : 2 p2 生产了:WoTou : 5 p3 生产了:WoTou : 5 p2 生产了:WoTou : 6 栈里有6个 线程在java里很重要 ,lz要多加强练习 去百度或google吧。五楼那个也不错。 Jmail有没有办法控制超时,邮件发送一定时间没发完终止发送 关于加载数据库驱动的几种方式的疑问。 java开发cs程序有没有好用的框架 Double类型输出的问题 请教一下 字符串变量是类中的一个变量还是一个对象? 请各位大哥进来帮小弟个忙--参数传递 怎么样能自动执行一个类?(两个问题) java 串口程序eclipse和控制台都正常,用Fat jar打包后运行jar串口打不开 JTree如何像DELPHI一样控制多层数据(5点前,在线等待) jbuilder求教? 新手求教冒泡排序。 DB2数据库有人过吗,怎么连接呢
package com.itcase.heima2;import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;public class TraditionalTimerTest { /**10后爆炸
* @param args
*/
public static void main(String[] args) {
new Timer().schedule(new TimerTask() { public void run() {
System.out.println("bombing");
}
}, 10000,3000);
while (true) {
System.out.println(new Date().getSeconds());
try {
Thread.sleep(1000);
} catch (InterruptedException e) { e.printStackTrace();
}
} }}
例子还挺多的 你可以看看
其中包括一个WoTou.java,代表消息
一个MsgQueue.java,为一个队列,提供put(Message msg)方法和get()方法
一个Produer.java,为生产者线程,在其run方法中每隔1秒产生一个Message对像并放入MsgQueue队列
一个Consumer.java为消费者线程,在其run方法中不断从MsgQueue队列中获取Message对像,并显示在屏幕上
一个TestMain.java,在其main方法中,启动2个Produer线程和2个消费者线程.
要求:
对于MsgQueue.java,队列的长度为10,当消息超过10个时,put()方法需要阻塞:当消息队列为空时,
public class ProducerConsumer {
public static void main(String[] args) {
SyncStack ss = new SyncStack();
Producer p1= new Producer(ss,"p1");
Consumer c1= new Consumer(ss,"c1");
Producer p2= new Producer(ss,"p2");
Consumer c2= new Consumer(ss,"c2");
}
}
class WoTou<T> {
int id;
WoTou(int id) {
this.id = id;
}
public String toString() {
return "WoTou : " + id;
}
}
class SyncStack {
int index = 0;
WoTou[] arrWT = new WoTou[6];
public void push(WoTou wt) {
while(index == arrWT.length) {
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
this.notifyAll();
arrWT[index] = wt;
index ++;
}
public WoTou pop() {
while(index == 0) {
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
this.notifyAll();
index--;
return arrWT[index];
}
}
class Producer implements Runnable {
SyncStack ss = null;
String a;
Producer(SyncStack ss,String a) {
this.ss = ss;
this.a= a;
Thread t=new Thread(this,a);
t.start();
}
public void run() {
for(int i=0; i<10; i++) {
synchronized(ss){
WoTou wt = new WoTou(i);
ss.push(wt);
System.out.println(a+" 生产了:" + wt);}
try {
Thread.sleep((int)(Math.random() * 200));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class Consumer implements Runnable {
SyncStack ss = null;
String a;
Thread t;
Consumer(SyncStack ss,String a) {
this.ss = ss;
this.a= a;
t=new Thread(this,a);
t.start();
}
public void run() {
for(int i=0; i<10; i++) {
synchronized(ss){
WoTou wt = ss.pop();
System.out.println(a+" 消费了: " + wt);}
try {
Thread.sleep((int)(Math.random() * 1000));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
p1 生产了:WoTou : 0
p2 生产了:WoTou : 0
p3 生产了:WoTou : 0
c1 消费了: WoTou : 0
c1 消费了: WoTou : 0
p3 生产了:WoTou : 1
c1 消费了: WoTou : 1
c1 消费了: WoTou : 0
p3 生产了:WoTou : 2
p1 生产了:WoTou : 1
c1 消费了: WoTou : 1
p2 生产了:WoTou : 1
p2 生产了:WoTou : 2
c1 消费了: WoTou : 2
p2 生产了:WoTou : 3
p3 生产了:WoTou : 3
c1 消费了: WoTou : 3
p3 生产了:WoTou : 4
p2 生产了:WoTou : 4
c1 消费了: WoTou : 4
c1 消费了: WoTou : 4
p1 生产了:WoTou : 2
c1 消费了: WoTou : 2
p2 生产了:WoTou : 5
p3 生产了:WoTou : 5
p2 生产了:WoTou : 6
栈里有6个