我们的一位培训师在解释CountDownLatch和CyclicBarrier之间的差异时给出了一个例子.
CountDownLatch:假设一块石头可以被10个人抬起,所以你将等待所有10个人来.然后只有你可以抬起石头.
CyclicBarrier:如果你要去野餐,你需要先在一个共同的地方见面,从那里开始你的旅程.
如果有人同意这些意见,请给我一些细节.
我已经阅读了这两个类的sun API.但我还需要一些解释.
我应该用Java创建一个基于Swing和gui的服务器和客户端.我需要以某种方式建立一个从服务器到客户端,从客户端到服务器的套接字,并传递某种字符串.I我希望稍后有一个函数可以根据套接字中的字符串做几件事.
出于某种原因,我找不到一个简单的代码示例,它以简单的方式显示了它是如何完成的.
任何人都有任何简单的例子,或者可以解释它是如何完成的?
请考虑以下代码片段:
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.lang.reflect.InvocationTargetException;
import javax.swing.*;
public class TestApplet extends JApplet
{
@Override
public void init()
{
try
{
SwingUtilities.invokeAndWait(new Runnable()
{
@Override
public void run()
{
createGUI();
}
});
}
catch(InterruptedException | InvocationTargetException ex)
{
}
}
private void createGUI()
{
getContentPane().setLayout(new FlowLayout());
JButton startButton = new JButton("Do work");
startButton.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent ae)
{
JLabel label = new JLabel();
new Worker(label).execute();
}
});
getContentPane().add(startButton);
}
private class Worker extends SwingWorker<Void, …Run Code Online (Sandbox Code Playgroud) 我有一个多线程实现,我创建一个ExecutorService并提交要执行的任务,我想知道所有线程被提交的时间已经完成而没有阻塞主线程和UI.我试过ExecutorService.awaitTermination()但它阻止了主线程和UI.我搜索了很多,但我似乎无法找到一种优雅的方式来做到这一点.我正在考虑创建另一个线程来计算完成的线程数量,并在它们全部完成时启动一个事件,但这不是一个好方法,我想要一个更好的解决方案!