小编use*_*221的帖子

虽然在不同的线程中标志更改时循环没有结束

我在我的Java程序的main方法中运行了一个while循环.循环应该运行,直到在程序的keyPressed方法中将布尔标志变量设置为true(我将程序作为KeyListener添加到JFrame).

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;

public class ThreadWhile implements KeyListener {
    private boolean flag = false;

    public static void main(String[] args) {
        //Set up key listening on a dummy JFrame
        JFrame frame = new JFrame("Key Detector 9000");
        frame.setVisible(true);
        ThreadWhile tw = new ThreadWhile();
        frame.addKeyListener(tw);

        System.out.println("Looping until flag becomes true...");
        while(!tw.flag) {
            //Commenting the println out makes the loop run forever!
            System.out.println(tw.flag); 
        }
        System.out.println("Flag is true, so loop terminated.");
        System.exit(0);
    }

    public void keyPressed(KeyEvent e) {
        flag = true; …
Run Code Online (Sandbox Code Playgroud)

java multithreading while-loop

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

标签 统计

java ×1

multithreading ×1

while-loop ×1