我使用 Java 邮件 API 接收来自多个 Gmail 帐户的消息。不同的帐户由不同的线程处理,我使用 aLinkedBlockingQueue来存储电子邮件。但是,我不希望将同一电子邮件重复添加到Queue. 这是我到目前为止的代码:
public synchronized void readMail(){
try {
boolean alreadyAdded = false;
Folder inbox = store.getFolder("Inbox");
inbox.open(Folder.READ_ONLY);
Message [] received = inbox.getMessages();
if(messages.isEmpty()){
for(Message newMessage:received){
System.out.println("Queue empty, adding messages");
messages.put(newMessage);
}
}
else{
for(Message existingMessage:messages){
for(Message newMessage:received){
if (alreadyAdded == true)
break;
else{
if(existingMessage.getSubject().equals(newMessage.getSubject())){
alreadyAdded = true;
System.out.println("boolean changed to true, message "+newMessage.getSubject()+"won't be added");
}
else{
alreadyAdded = false;
System.out.println("Non-duplicate message "+newMessage.getSubject());
messages.put(newMessage);
}
}
}
}
} …Run Code Online (Sandbox Code Playgroud) 我试图在Java中使用swing绘制一个令人难以置信的基本形状,但由于某种原因它似乎没有工作.这是我从讲师那里下载的代码,他在演讲中向我们展示了这些代码,但是当我运行它时窗口打开但没有画出来,我不明白为什么.
package graphicsEx;
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
public class Lecture1Example extends JPanel{
// This is where the JPanel gets (re-)painted when the screen is refreshed.
public void paintComponent(Graphics g) {
// Cast to Graphics2D for more features.
Graphics2D g2D = (Graphics2D) g;
Rectangle2D rect = new Rectangle2D.Double(20,30,40,50);
g2D.setColor(Color.red);
g2D.draw(rect);
g2D.fill(rect);
}
public static void main(String args[]) {
JFrame frame = new JFrame("Playing with Graphics");
frame.setSize(500, 400);
frame.setVisible(true);
frame.setContentPane(new Lecture1Example());
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Eclipse IDE.