Tag: 线程睡眠

延迟在java图形中不起作用

这是通过Bresenham算法在计算位置上绘制点的代码: public void drawBresenhamPoints(Graphics2D g2, List bresenham) throws InterruptedException { Graphics2D g = (Graphics2D) g2; if(bresenham == null) return; g.setColor(Color.DARK_GRAY); for(int i = 0; i < bresenham.size(); i = i+20) { int x = bresenham.get(i).x – pointWidth1/2; int y = bresenham.get(i).y – pointWidth1/2; int ovalW = pointWidth1; int ovalH = pointWidth1; g.fillOval(x, y, ovalW, ovalH); […]

从Java中的synchronized上下文调用Thread.sleep()

我已经读过Thread.sleep()将暂停当前运行的线程指定的时间,然后它返回到runnable状态,等待轮到它运行。 此外,如果从synchronized上下文调用, sleep()不会释放它所持有的锁。 所以我想知道什么时候会释放锁。 如果线程处于hibernate状态,永远不会有机会运行,那么它将始终保持锁定自身,然后其他线程如何进入同步方法/块。 我不确定我是否在问有效的问题。 但请帮帮我。

在ActionListener中使用Thread.sleep()的简单动画

我用这个代码制作轮盘赌时遇到了麻烦。 当我点击“旋转!”时,目标是旋转轮子。 按钮。 我通过创建一个for循环来完成此操作,该循环应该将轮的状态从true更改为false,这会更改方向。 当足够快地完成时,应该产生运动的错觉。 我遇到的问题是:尽管我放置了重绘(),但是在完成for循环之后我的轮子才重新粉刷。 所以,它只旋转一个滴答声。 这是我的ActionListener的一些示例代码: public class spinListener implements ActionListener { RouletteWheel wheel; int countEnd = (int)(Math.random()+25*2); public spinListener(RouletteWheel w) { wheel = w; } public void actionPerformed(ActionEvent e) { for (int i = 0; i <countEnd; i++) { try { Thread.sleep(100); if (wheel.getStatus() == true) { wheel.setStatus(false); repaint(); } if (wheel.getStatus() […]