求一个Java多线程例子

解决方案 »

  1.   

    //这个例子是培训课上的  讲述的时间定制 不过已经封装了 可以自己查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();
    }
    } }}
      

  2.   

    http://wenku.baidu.com/view/f214392fb4daa58da0114a32.html
    例子还挺多的 你可以看看
      

  3.   

     写出一组模拟生产者/消费者的协作程序
     
      其中包括一个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()方法需要阻塞:当消息队列为空时,
      

  4.   

    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个
      

  5.   

    线程在java里很重要 ,lz要多加强练习
      

  6.   

    去百度或google吧。五楼那个也不错。