Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->系统管理 ->正文

Java入门(13) More Java!

来源:Linux-cn.com 作者:Webmaster 时间:2007-05-05 点击: [收藏] [投稿]

  ____________________________________________________________________

  ____________________________________________________________________

  ____________________________________________________________________

  练习答案

  1)d b c a

  2)c d b a

  3)c 在JDBC中,我们应该使用JDBC URL来说明数据源;

  4)c 在这里odbc是子协议名;

  5)共需要修改3处:

  将


ResultSet rs=sta.executeQuery
("SELECT Name,Sex,Age,Chinese,Maths FROM student");
System.out.println("Name Sex Age Chinese Maths");

  改为:


ResultSet rs=sta.executeQuery
("SELECT Name,Sex,Age FROM student");
System.out.println("Name Sex Age");

  将以下两行删掉:


chinese=rs.getString(4);
maths=rs.getString(5);

  将output=name+" "+sex+" "+age+" "+chinese+" "+maths;

  改为:output=name+" "+sex+" "+age;

  7) 以下是一个程序实例:

  源程序:lianxi1301.java


import java.sql.*;
public class lianxi1301
{
public static void main(String args[]) throws SQLException
{
try
{
String name,sex,chinese,output;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection
("jdbc:odbc:student");
Statement sta=con.createStatement();
ResultSet rs=sta.executeQuery("SELECT
Name,Sex,Chinese FROM student Where Age=9");
System.out.println("Name Sex Chinese");
while(rs.next())
{
name=rs.getString(1);
sex=rs.getString(2);
chinese=rs.getString(3);
output=name+" "+sex+" "+chinese;
System.out.println(output);
}
} catch(java.lang.Exception ex) {
ex.printStackTrace();
}
} 
} 

  程序的输出如下图所示:

13-13

  图13-13 lianxi1301的输出

  13.3 编写多线程Java程序

  传授新知

  在今天,是否支持编写多线程的程序,已经成为一个程序设计语言的重要方面。那么什么是多线程,什么又是线程呢?

  要搞懂什么是线程,其实就是要能够清楚地区分三个概念:“程序”、“进程”、“线程”。程序嘛,大家可能够很容易理解。比如说,“写字板”、“Word”,还有我们前面写过的程序。那么什么是“进程”呢?

  在许多计算机理论书籍中的定义十分拗口,对于您来说,只需记住:“进程就是一个运行着的程序”。看到这里,可能有人会说:“唉,说了半天,进程就是程序呀!一回事嘛!很简单,我懂了”。很遗憾,我得告诉你,这样的理解是错误的。请看下图:

13-14

  图13-14 进程示意图

  我们启动了两次notepad,就出现了两个记事本!而且,我们还可以在这两个记事本上写上不同的内容!

  它们不是一个程序?它们可都是notepad呀,我们把这两个运行中的程序称为“进程”,不同的进程是完全不相关的。它们都有各地的内存块,用来存放运行时的临时数据(例如,在两个记事本上的写的字都是存放在各自进程的内存块中的)。

  不知大家是否有过使用DOS操作系统的经验,在DOS中一次只允许执行一个程序,用刚学会的术语来说,就是只有一个进程。这种操作系统被称为“单任务系统”。

  而在Windows中,我们可以允许执行多个程序,也可以将一个程序执行多次,这种操作系统就是“多任务系统”。操作系统负责协调这些运行着的程序---进程。

  正如下图所示,在这种情况下,存在着互相不干拢的多个进程:

13-15

  图13-15进程示意图

  每一个圈代表一个进程,圆圈是这个进程的地址空间、寄存器……,中间的长方形是进程中的程序段,而黑色箭头则是程序计数器。

  这个进程获得执行权时(CPU时间分片,轮到它),就从程序计数器开始执行。在程序时所有的数据都存放在自己的地址空间里(圆圈中)。

  一些提示:

  操作系统其中一个职责就是管理进程,为它们分配不同的存储区域,如果让这些“圆圈”相交,程序就会崩溃,Windows就蓝屏了!!

  这个机制看起来十分的合理,不过遇到有些问题时,就会感觉到它并不是那么尽善尽美了。例如,我们有一个程序用来完成从远方接收信息,然后将其打印出来!

  这个程序在工作时发现有这样的问题:当打印机忙的时候,这个程序无法打印,它就被“阻塞”了,一直在等待打印机空闲。在这个等待的时间里,也无法接收信息了。

  这时,我们就可以使用“线程”来解决。

13-16

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:Java入门(11) 让程序更动人   下一篇:JSP 技术白皮书

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号