⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 primes.java

📁 演示win32的socket 通讯 八皇后的改进算法 并发Concurrency的JAVA实现 applet演示鼠标的点击时间和显示图象 手机J2ME的多线程演示
💻 JAVA
字号:
/*
@author  j.n.magee 25/04/98
*/
package concurrency.primes;

import java.awt.*;
import java.applet.*;
import concurrency.connector.*;

public class Primes extends Applet {
    PrimesCanvas display;
    Button goBuf,goNoBuf;
    Generator gen;
    Filter filter[] = new Filter[N];
    static int N = 7; // number of filters
    static int EOS = -1;

    public void init() {
        setLayout(new BorderLayout());
        display = new PrimesCanvas("Primes Sieve", Color.cyan, N+1);
        add("Center",display);
        Panel p0= new Panel();
        p0.add(goNoBuf = new Button(" Go - unbuffered "));
        p0.add(goBuf = new Button(" Go - buffered "));
        goBuf.setFont(new Font("Helvetica",Font.BOLD,24));
        goNoBuf.setFont(new Font("Helvetica",Font.BOLD,24));
        add("South",p0);
    }


  private void go(boolean buffered) {
    display.clear();
    // create channels
    Pipe pipe[] = new Pipe[N+1];
    for (int i=0; i<N; ++i)
      if (buffered)
        pipe[i] = new PipeImplBuf();
      else
        pipe[i] = new PipeImplUnBuf();
    //create threads
    gen = new Generator(pipe[0],display);
    for (int i=0; i<N; ++i)
      filter[i] =new Filter(pipe[i],pipe[i+1],i+1,display);
      gen.start();
      for (int i=0; i<N; ++i) filter[i].start();
  }

  private boolean ended() {
    for (int i=0; i<N; ++i)
        if (filter[i]!=null && filter[i].isAlive()) return false;
    if (gen!=null && gen.isAlive()) return false;
    return true;
  }

    public void stop() {
        for (int i=0; i<N; ++i)
          if (filter[i]!=null && filter[i].isAlive()) {
            filter[i].interrupt();
            filter[i].stop(); //necessary for 1.0 compatibility
          }
        if (gen!=null && gen.isAlive())
          {gen.interrupt();
           gen.stop();        //necessary for 1.0 compatibility
        }
        display.clear();
    }

   public boolean handleEvent(Event event) {
      if (event.id != event.ACTION_EVENT) {
        return super.handleEvent(event);
      } else if(event.target==goNoBuf) {
        if (ended()) go(false);
        return true;
      } else if(event.target==goBuf) {
        if (ended()) go(true);
        return true;
      } else
        return super.handleEvent(event);
    }

 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -