小编use*_*475的帖子

如何检查重复项是否未添加到 LinkedBlockingQueue 中?

我使用 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 multithreading jakarta-mail blockingqueue

5
推荐指数
1
解决办法
2966
查看次数

Swing没有画在Mac上

我试图在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.

java eclipse macos swing paintcomponent

1
推荐指数
1
解决办法
753
查看次数