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

📄 listenerexamples.java

📁 java concurrency in practice 源码. JAVA并发设计
💻 JAVA
字号:
package net.jcip.examples;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.*;import java.util.concurrent.*;import javax.swing.*;/** * ListenerExamples * * @author Brian Goetz and Tim Peierls */public class ListenerExamples {    private static ExecutorService exec = Executors.newCachedThreadPool();    private final JButton colorButton = new JButton("Change color");    private final Random random = new Random();    private void backgroundRandom() {        colorButton.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent e) {                colorButton.setBackground(new Color(random.nextInt()));            }        });    }    private final JButton computeButton = new JButton("Big computation");    private void longRunningTask() {        computeButton.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent e) {                exec.execute(new Runnable() {                    public void run() {                        /* Do big computation */                    }                });            }        });    }    private final JButton button = new JButton("Do");    private final JLabel label = new JLabel("idle");    private void longRunningTaskWithFeedback() {        button.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent e) {                button.setEnabled(false);                label.setText("busy");                exec.execute(new Runnable() {                    public void run() {                        try {                            /* Do big computation */                        } finally {                            GuiExecutor.instance().execute(new Runnable() {                                public void run() {                                    button.setEnabled(true);                                    label.setText("idle");                                }                            });                        }                    }                });            }        });    }    private final JButton startButton = new JButton("Start");    private final JButton cancelButton = new JButton("Cancel");    private Future<?> runningTask = null; // thread-confined    private void taskWithCancellation() {        startButton.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent e) {                if (runningTask != null) {                    runningTask = exec.submit(new Runnable() {                        public void run() {                            while (moreWork()) {                                if (Thread.currentThread().isInterrupted()) {                                    cleanUpPartialWork();                                    break;                                }                                doSomeWork();                            }                        }                        private boolean moreWork() {                            return false;                        }                        private void cleanUpPartialWork() {                        }                        private void doSomeWork() {                        }                    });                }                ;            }        });        cancelButton.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent event) {                if (runningTask != null)                    runningTask.cancel(true);            }        });    }    private void runInBackground(final Runnable task) {        startButton.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent e) {                class CancelListener implements ActionListener {                    BackgroundTask<?> task;                    public void actionPerformed(ActionEvent event) {                        if (task != null)                            task.cancel(true);                    }                }                final CancelListener listener = new CancelListener();                listener.task = new BackgroundTask<Void>() {                    public Void compute() {                        while (moreWork() && !isCancelled())                            doSomeWork();                        return null;                    }                    private boolean moreWork() {                        return false;                    }                    private void doSomeWork() {                    }                    public void onCompletion(boolean cancelled, String s, Throwable exception) {                        cancelButton.removeActionListener(listener);                        label.setText("done");                    }                };                cancelButton.addActionListener(listener);                exec.execute(task);            }        });    }}

⌨️ 快捷键说明

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