You code will request individual pixels of the screen, which is considerably slow.
Instead, you can capture a screenshot (image) of the screen (or parts thereof), and then read the pixel values from that (in-memory) screenshot:
Robot robot = new Robot();
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Rectangle area = new Rectangle(0, 0, screenSize.width, screenSize.height);
BufferedImage screenshot = robot.createScreenCapture(area);
int x = ...;
int y = ...;
Color pixelColor = new Color(screenshot.getRGB(x, y));
By the way, if you only need certain channels, you can extract them as follows:
int rgb = screenshot.getRGB(x, y);
int red = (rgb >> 16) & 0xFF;
int green = (rgb >> 8) & 0xFF;
int blue = rgb & 0xFF;
CLICK HERE to find out more related problems solutions.