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);
}
});
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
java_concurrency_in_practice_source源代码
共170个文件
java:158个
html:12个
4星 · 超过85%的资源 需积分: 12 9 下载量 191 浏览量
2017-11-26
18:55:16
上传
评论
收藏 192KB ZIP 举报
温馨提示
java_concurrency_in_practice_source java多线程 java多线程 java多线程
资源推荐
资源详情
资源评论
收起资源包目录
java_concurrency_in_practice_source源代码 (170个子文件)
Thread.html 107KB
ThreadPoolExecutor.html 81KB
ExecutorService.html 39KB
Condition.html 34KB
Lock.html 28KB
ConcurrentMap.html 22KB
Future.html 18KB
ReadWriteLock.html 15KB
Executor.html 14KB
Thread.UncaughtExceptionHandler.html 12KB
Callable.html 11KB
ThreadFactory.html 11KB
ListenerExamples.java 5KB
ListenerExamples1.java 5KB
ListenerExamples3.java 5KB
ListenerExamples2.java 5KB
NonReentrantDeadlock.java 3KB
ImprovedList.java 3KB
ProducerConsumer.java 3KB
ProducerConsumer1.java 3KB
PutTakeTest1.java 3KB
PutTakeTest.java 3KB
BackgroundTask.java 3KB
DeadlockAvoidance.java 3KB
IndexingService.java 3KB
SocketUsingTask.java 2KB
WebCrawler.java 2KB
Animals.java 2KB
TestBoundedBuffer2.java 2KB
TestBoundedBuffer.java 2KB
TestBoundedBuffer1.java 2KB
CellularAutomata.java 2KB
TimeBudget.java 2KB
ConcurrentPuzzleSolver.java 2KB
CooperatingNoDeadlock.java 2KB
ReadWriteMap.java 2KB
TransformingSequential2.java 2KB
TransformingSequential1.java 2KB
TransformingSequential.java 2KB
DynamicOrderDeadlock.java 2KB
LogService.java 2KB
InduceLockOrder.java 2KB
MyAppThread.java 2KB
FutureRenderer.java 2KB
LinkedQueue.java 2KB
TimedPutTakeTest1.java 2KB
TimedPutTakeTest.java 2KB
CooperatingDeadlock.java 2KB
Renderer.java 2KB
TrackingExecutor.java 2KB
ConditionBoundedBuffer.java 2KB
CachedFactorizer.java 2KB
SemaphoreBoundedBuffer.java 2KB
LifecycleWebServer.java 2KB
CasNumberRange.java 2KB
TimingThreadPool.java 2KB
TestThreadPool1.java 1KB
TestThreadPool.java 1KB
DemonstrateDeadlock.java 1KB
RenderWithTimeBudget.java 1KB
Factorizer.java 1KB
TimedRun2.java 1KB
UnsafeCachingFactorizer.java 1KB
MonitorVehicleTracker.java 1KB
Memoizer.java 1KB
PrimeGenerator1.java 1KB
PrimeGenerator.java 1KB
StripedMap.java 1KB
GrumpyBoundedBuffer.java 1KB
GrumpyBoundedBuffer1.java 1KB
DelegatingVehicleTracker.java 1KB
ThreadDeadlock.java 1KB
SynchronizedFactorizer.java 1KB
SemaphoreOnLock.java 1KB
BoundedBuffer.java 1KB
LogWriter.java 1KB
ReaderThread.java 1KB
TestHarness.java 1KB
Preloader.java 1KB
GuiExecutor.java 1KB
SwingUtilities.java 1KB
SequentialPuzzleSolver.java 1KB
VolatileCachedFactorizer.java 1KB
CheckForMail.java 1KB
ConcurrentStack.java 1KB
PublishingVehicleTracker.java 1KB
BaseBoundedBuffer.java 1KB
Memoizer1.java 1012B
TimedLocking.java 999B
SleepyBoundedBuffer.java 983B
BoundedExecutor.java 981B
UnsafeCountingFactorizer.java 973B
ServerStatusAfterSplit.java 964B
VisualComponent.java 959B
PuzzleSolver.java 952B
TimedRun.java 950B
NumberRange.java 948B
TaskExecutionWebServer.java 947B
CountingFactorizer.java 915B
OneShotLatch.java 902B
共 170 条
- 1
- 2
资源评论
- goshawk_wang_yahoo2020-05-18非常好,终于找到了
人月IT
- 粉丝: 189
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- tensorflow-gpu-2.7.3-cp39-cp39-manylinux2010-x86-64.whl
- tensorflow-2.8.0-cp37-cp37m-manylinux2010-x86-64.whl
- tensorflow-2.7.4-cp39-cp39-manylinux2010-x86-64.whl
- 个人资料-1111相关内容
- # C 语言介绍与使用技巧 ## C 语言简介:
- 3、高质量汽车租赁系统+layui)
- 介绍 Python 的一些基本信息,并分享一些使用技巧
- Qt的tcp网络编程(客户端和服务器)
- 当谈到 Linux 常用命令时,有很多命令可以提及 以下是一些常见的 Linux 命令及其功能:
- Sora AI Video Preview Case Sora AI 视频模版项目,React全栈快速部署.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功