注册 登录
编程论坛 J2EE论坛

弱智抓蛙男 前来报道,有个小问题望不吝赐教

弱智抓蛙男 发布于 2006-11-24 18:45, 1550 次点击
java运行使每new一个对象就产生了一个进程么?
或者每个方法就是一个进程?
就那么个意思,但是对进程不甚了解,也不知道这样问有没有逻辑问题。
静候佳音!
21 回复
#2
hanshengchua2006-11-24 19:20
java是oop思想的,每一个类必须new之后产生一个新对象之后才可以使用。

进程就是执行的程序,在windows下不是有任务管理去么?那么多正在执行的程序其实都是一个个的进程。
#3
千里冰封2006-11-24 19:22
一个JAVA程序才是一个进程,进程里面可以有很多线程

new 一个对象和执行一个方法都是一个线程里面做的事
#4
弱智抓蛙男2006-11-24 19:31
封哥就是不一样啊哈哈
这一手就这么明白,一看就懂了,不愧是高~~手啊哈哈、

还有个小疑问:声明对象的时候是不是也有个线程产生了?
#5
千里冰封2006-11-24 19:36
当然不是

线程是你自己去建的

如果不创建的话,用户只有一个主线程在运行

#6
弱智抓蛙男2006-11-24 19:52

有点糊涂,因为看了一道贴是这样的:
abstract class Exam4 {
int j=3;
Exam4()
{
print();
{
System.out.println(j);
}
}
abstract void print();
}

public class Exam4Sub extends Exam4{
int i=1;
void print()
{
System.out.println(i);
}
public static void main(String[] args) {
Exam4Sub e=new Exam4Sub();
e.print();
}
}
输出结果是0 1 3
是不是说明在exam4sub e;的时候电脑打印了一个 0
这难道不是线程干的么?望不吝赐教。

#7
千里冰封2006-11-24 19:57

结果是0 3 1吧

这是对象初始化顺序的问题

你可以去J2SE版找找相关的帖子

#8
弱智抓蛙男2006-11-24 20:02


一下字明白了,是我糊涂了。。。

再顺便问一下,在applet里面paint和repaint和update都是虚拟机自己创建的进程么?

#9
千里冰封2006-11-24 20:09

paint是系统调用的,有一个专门的线程来做这个事情

#10
弱智抓蛙男2006-11-24 20:19

恩~~有道理
再帮我改一个程序:
import java.awt.*;
import java.applet.*;

public class changeColor extends Applet{

public void init(String args[]){

Frame f = new Frame("change color box");
f.setSize(300,300);
}


public void paint(Graphics g){
int k ;
for (int i = 0; i <= 255; i++){
k = i;
for (int j = 0; j <= 255; j++){
g.setColor(new Color(k, i, j));
g.drawLine(i, j, i, j);
}
}

repaint();
}
}
我只会extends 成 applet 来做,不是applet的话我就不会用graphics g 了
劳烦帮我实现一下,应该是个很肤浅的问题。自鄙一下

#11
千里冰封2006-11-24 20:21
你想画什么?
#12
弱智抓蛙男2006-11-24 20:22

一个不断更新渐变的彩色画板,

#13
千里冰封2006-11-24 20:28
好的,帮你写一下
#14
弱智抓蛙男2006-11-24 20:31

多谢多谢

#15
千里冰封2006-11-24 20:40

/*
* TestApplet.java
*
* Created on 2006年11月24日, 下午8:29
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/

/**
*
* @author lbf
*/
import java.awt.*;
import javax.swing.*;
public class TestApplet extends JApplet implements Runnable{
private Color c1,c2;
/** Creates a new instance of TestApplet */
public TestApplet() {

}
public void init(){
c1=Color.RED;
c2=Color.BLUE;
new Thread(this).start();
}
public void paint(Graphics g){
GradientPaint gp=new GradientPaint(0,0,c1,0,300,c2);
Graphics2D g2d=(Graphics2D)g;
g2d.setPaint(gp);
g2d.fillRect(0,0,300,300);
this.setSize(300,300);
}
public void run(){
while(true){
try{
Thread.sleep(200);
c1=new Color((int)(Math.random()*0xFFFFFF));
c2=new Color((int)(Math.random()*0xFFFFFF));
repaint();
} catch(Exception exe){
exe.printStackTrace();
}
}
}
public static void main(String[] args) {
TestApplet ta=new TestApplet();
JFrame jf=new JFrame("application");
jf.getContentPane().add(ta,BorderLayout.CENTER);
jf.setSize(300,300);
jf.setLocationRelativeTo(null);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ta.init();
ta.start();
}
}


你运行看看吧,,

可以做为applet运行,也可以做为application运行,因为它有main方法

#16
弱智抓蛙男2006-11-24 20:42

不愧是老大

辛苦了

偶考回去研究研究

用的不是自己的机子,要走了,明天在来讨教哈~

#17
千里冰封2006-11-24 20:43
好好学习吧

学编程记得多多思考
#18
弱智抓蛙男2006-11-24 20:44
恩,一定的,谢谢
#19
神vLinux飘飘2006-11-24 21:10
live41也是这个时候下的....
#20
baidu2006-11-24 21:13
#21
千里冰封2006-11-24 22:05
原来我又被人耍了

#22
弱智抓蛙男2006-11-25 13:13

没有那么严重拉~~~

1