java flag_java中的flag标记问题

今天看视频,看到以下代码:

class Resource

{

private String name;

private int count = 1;

//定义标记。

private boolean flag = false;

//1,提供设置的方法。

public synchronized void set(String name)

{

if(flag)

try{this.wait();}catch(InterruptedException e){}

//给成员变量赋值并加上编号。

this.name = name + count;

//编号自增。

count++;

//打印生产了哪个商品。

System.out.println(Thread.currentThread().getName()+"......生产者...."+this.name);

//将标记改为true。

flag = true;

//唤醒消费者。

this.notify();

}

public synchronized void out()

{

if(!flag)

try{this.wait();}catch(InterruptedException e){}

System.out.println(Thread.currentThread().getName()+"....消费者...."+this.name);

//将标记该为false。

flag = false;

//唤醒生产者。

this.notify();

}

}

//2,描述生产者。

class Producer implements Runnable

{

private Resource r ;

// 生产者一初始化就要有资源,需要将资源传递到构造函数中。

Producer(Resource r)

{

this.r = r;

}

public void run()

{

while(true)

{

r.set("面包");

}

}

}

//3,描述消费者。

class Consumer implements Runnable

{

private Resource r ;

// 消费者一初始化就要有资源,需要将资源传递到构造函数中。

Consumer(Resource r)

{

this.r = r;

}

public void run()

{

while(true)

{

r.out();

}

}

}

class ThreadDemo9

{

public static void main(String[] args)

{

//1,创建资源对象。

Resource r = new Resource();

//2,创建线程任务。

Producer pro = new Producer(r);

Consumer con = new Consumer(r);

//3,创建线程。

Thread t1 = new Thread(pro);

Thread t2 = new Thread(con);

t1.start();

t2.start();

}

}

对于里面的flag和!flag不能理解。。。

请各位具体解释一下这两句里面flag到底代表什么??

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FLAG_HOMEKEY_DISPATCHED是一种标志,用于指示系统是否应该发送处理HOME键的消息。在Android应用程序,可以通过设置FLAG_HOMEKEY_DISPATCHED标志来控制HOME键的行为。 以下是FLAG_HOMEKEY_DISPATCHED的使用示例: ```java @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_HOME) { // 处理HOME键按下事件 // 设置FLAG_HOMEKEY_DISPATCHED标志,阻止系统处理HOME键事件 event.startTracking(); getWindow().addFlags(WindowManager.LayoutParams.FLAG_HOMEKEY_DISPATCHED); return true; } return super.onKeyDown(keyCode, event); } @Override public boolean onKeyUp(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_HOME) { // 处理HOME键释放事件 if (event.isTracking() && !event.isCanceled()) { // 如果HOME键按下后没有取消事件,就执行需要的操作 // ... // 清除FLAG_HOMEKEY_DISPATCHED标志,系统会处理HOME键事件 getWindow().clearFlags(WindowManager.LayoutParams.FLAG_HOMEKEY_DISPATCHED); } return true; } return super.onKeyUp(keyCode, event); } ``` 在这个示例,onKeyDown()方法处理了HOME键按下事件,并设置了FLAG_HOMEKEY_DISPATCHED标志,阻止系统处理HOME键事件。同时,通过调用KeyEvent.startTracking()方法,标记事件需要跟踪。在onKeyUp()方法,处理HOME键释放事件,并检查事件是否已被跟踪并取消。如果没有取消事件,就执行需要的操作,并通过调用getWindow().clearFlags()方法清除FLAG_HOMEKEY_DISPATCHED标志,让系统处理HOME键事件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值