导航:首页 > 编程语言 > javastateflag

javastateflag

发布时间:2025-01-13 01:51:15

java Thread BLOCKED和WAITING两种状态的区别

BLOCKED状态
线程处于BLOCKED状态的场景。
当前线程在等待一个monitor lock,比如等待执行synchronized代码块或者使用synchronized标记的方法。
在synchronized块中循环调用Object类型的wait方法,如下是样例
synchronized(this)
{
while (flag)
{
obj.wait();
}
// some other code
}
WAITING状态
线程处于WAITING状态的场景。
调用Object对象的wait方法,但没有指定超时值。
调用Thread对象的join方法,但没有指定超时值。
调用LockSupport对象的park方法。
提到WAITING状态,顺便提一下TIMED_WAITING状态的场景。
TIMED_WAITING状态
线程处于TIMED_WAITING状态的场景。
调用Thread.sleep方法。
调用Object对象的wait方法,指定超时值。
调用Thread对象的join方法,指定超时值。
调用LockSupport对象的parkNanos方法。
调用LockSupport对象的parkUntil方法。

㈡ 关于java中的interrupt()方法疑问

当一个线程处于不可运行状态时,如键盘输入,调用Thread.join()方法或者Thread.sleep()方法,从而线程被阻塞了。调用interrupt()可以使一个被阻塞的线程抛出一个中断异常,从而使线程提前结束阻塞状态,退出堵塞代码。
你可参照下http://daydayup1989.javaeye.com/blog/785581

㈢ 一个画直线的JAVA小程序

//你的类我改了错误,现在可以用了

//有错的地方我标了“//有错”

//请认真看,我花了时间改的
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class DrawLine {

public static void main(String[] args) {

new MyFrame(200, 200, 300, 300);
}
}

class MyFrame extends Frame {

Point p = new Point();
Point q = new Point();
boolean flag;
ArrayList<Point> a1 = new ArrayList<Point>();
ArrayList<Point> a2 = new ArrayList<Point>();

MyFrame(int x, int y, int w, int h) {
super("drawline");
setBounds(x, y, w, h);
setBackground(Color.white);
Button b = new Button("Line");
add(b, BorderLayout.NORTH);
b.addActionListener(new ButtonMonitor());
addMouseListener(new MouseMonitor());
addWindowListener(new WindowMonitor());
setVisible(true);
}

class ButtonMonitor implements ActionListener {

public void actionPerformed(ActionEvent e) {

if (e.getActionCommand() == "Line") {
flag = true;
}
repaint();
}
}

public void paint(Graphics g) {

Iterator<Point> i1 = a1.iterator();
Iterator<Point> i2 = a2.iterator();

while (i1.hasNext() && i2.hasNext()) {
p = i1.next();
q = i2.next();//有错
Color c = g.getColor();
g.setColor(Color.red);
g.drawLine(p.x, p.y, q.x, q.y);
g.setColor(c);
}

}

public void addPoint1(Point p) {
a1.add(p);
}

public void addPoint2(Point p) {
a2.add(p);
}

class MouseMonitor extends MouseAdapter {

public void mousePressed(MouseEvent e) {

MyFrame my = (MyFrame) e.getSource();
addPoint1(new Point(e.getX(), e.getY()));//有错 my->e
repaint();
}

public void mouseReleased(MouseEvent e) {//有错mouseDragged->mouseReleased

MyFrame my = (MyFrame) e.getSource();
addPoint2(new Point(e.getX(), e.getY()));//有错
repaint();
}
}

class WindowMonitor extends WindowAdapter {

@Override
public void windowClosing(WindowEvent e) {

setVisible(false);
System.exit(0);
}
}
}

阅读全文

与javastateflag相关的资料

热点内容
汽车保养数据怎么清 浏览:629
pdf文件图像打不开 浏览:176
msp430时钟程序 浏览:660
查看sd卡文件系统格式 浏览:696
c盘中显示隐藏文件 浏览:951
苹果升级系统白屏 浏览:136
三菱gxplc编程软件如何使用 浏览:710
海康威视手机app怎么看不了 浏览:482
wordpress下载中心插件 浏览:402
微信限制字数是多少 浏览:20
策划输出主要从哪些文件来 浏览:174
网络营销找什么工作 浏览:372
tcl匹配文件名的正则表达式 浏览:461
音频文件数据量为何8 浏览:534
有哪些分享学习的网站 浏览:174
小程序文件发到微信电脑如何打开 浏览:265
四星五星做号工具 浏览:920
qq邮箱怎么发送视频文件 浏览:453
能免费开店的网站有哪些 浏览:548
中国网络营销发展史 浏览:828

友情链接