码迷,mamicode.com
首页 > 编程语言 > 详细

线程实验

时间:2014-11-27 12:26:38      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   color   os   sp   java   for   

1.用两种方式定义线程

2.用线程模拟龟兔赛跑问题。即,兔子每次跳两步或者打瞌睡,乌龟每秒走一步。路程为10步。

 

import java.sql.*; 
import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.util.*; 

public class SampleIntro extends JFrame { 


private Connection connection; 
private Statement statement; 
private ResultSet resultSet; 
private ResultSetMetaData rsMetaData; 

//GUI变量定义
private JTable table; 
private JTextArea inputQuery; 
private JButton submitQuery; 

public SampleIntro() 
{ 
//Form的标题 
super( "输入SQL语句,按查询按钮查看结果。" ); 

String url = "jdbc:mysql://localhost:3306/STOREDB"; 
String username = "root"; 
String password = ""; 
//加载驱动程序以连接数据库
try { 
    Class.forName( "org.gjt.mm.mysql.Driver" );   //com.mysql.jdbc.Driver
    connection = DriverManager.getConnection( 
    url, username, password ); 
} 
//捕获加载驱动程序异常
catch ( ClassNotFoundException cnfex ) { 
System.err.println( 
"装载 JDBC/ODBC 驱动程序失败。" ); 
cnfex.printStackTrace(); 
System.exit( 1 ); // terminate program 
} 
//捕获连接数据库异常
catch ( SQLException sqlex ) { 
System.err.println( "无法连接数据库" ); 
sqlex.printStackTrace(); 
System.exit( 1 ); // terminate program 
} 
//如果数据库连接成功,则建立GUI
//SQL语句
String test="SELECT * FROM CUSTOMERS"; 
inputQuery = new JTextArea( test, 4, 30 ); 
submitQuery = new JButton( "查询" ); 
//Button事件
submitQuery.addActionListener( 
new ActionListener() { 
public void actionPerformed( ActionEvent e ) 
{ 
getTable(); 
} 
} 
); 

JPanel topPanel = new JPanel(); 
topPanel.setLayout( new BorderLayout() ); 
//将"输入查询"编辑框布置到 "CENTER"
topPanel.add( new JScrollPane( inputQuery), BorderLayout.CENTER ); 
//将"提交查询"按钮布置到 "SOUTH"
topPanel.add( submitQuery, BorderLayout.SOUTH ); 
table = new JTable(); 
Container c = getContentPane(); 
c.setLayout( new BorderLayout() ); 
//将"topPanel"编辑框布置到 "NORTH"
c.add( topPanel, BorderLayout.NORTH ); 
//将"table"编辑框布置到 "CENTER"
c.add( table, BorderLayout.CENTER ); 
getTable(); 
setSize( 500, 300 ); 
//显示Form
show(); 
} 

private void getTable() 
{ 
    try { 
    //执行SQL语句
    String query = inputQuery.getText(); 
    statement = connection.createStatement(); 
    resultSet = statement.executeQuery( query ); 
    //在表格中显示查询结果
    displayResultSet( resultSet ); 
    } 
    catch ( SQLException sqlex ) { 
    sqlex.printStackTrace(); 
    } 
} 

private void displayResultSet( ResultSet rs ) 
throws SQLException 
{ 
    //定位到达第一条记录
    boolean moreRecords = rs.next(); 
    //如果没有记录,则提示一条消息
    if ( ! moreRecords ) { 
    JOptionPane.showMessageDialog( this, 
    "结果集中无记录" ); 
    setTitle( "无记录显示" ); 
    return; 
    } 
    Vector columnHeads = new Vector(); 
    Vector rows = new Vector(); 
    try { 
    //获取字段的名称
    ResultSetMetaData rsmd = rs.getMetaData(); 
    for ( int i = 1; i <= rsmd.getColumnCount(); ++i ) 
    columnHeads.addElement( rsmd.getColumnName( i ) ); 
    //获取记录集
    do { 
    rows.addElement( getNextRow( rs, rsmd ) ); 
    } while ( rs.next() ); 
    //在表格中显示查询结果
    table = new JTable( rows, columnHeads ); 
    JScrollPane scroller = new JScrollPane( table ); 
    Container c = getContentPane(); 
    c.remove(1); 
    c.add( scroller, BorderLayout.CENTER ); 
    //刷新Table
    c.validate(); 
} 
catch ( SQLException sqlex ) { 
sqlex.printStackTrace(); 
} 
} 


private Vector getNextRow( ResultSet rs, 
ResultSetMetaData rsmd ) 
throws SQLException 
{ 
    Vector currentRow = new Vector(); 
    for ( int i = 1; i <= rsmd.getColumnCount(); ++i ) 
    currentRow.addElement( rs.getString( i ) ); 
    //返回一条记录 
    return currentRow; 
} 

public void shutDown() 
{ 
    try { 
    //断开数据库连接
    connection.close(); 
    } 
    catch ( SQLException sqlex ) { 
    System.err.println( "Unable to disconnect" ); 
    sqlex.printStackTrace(); 
} 
} 

public static void main( String args[] ) 
{ 
final SampleIntro app = 
new SampleIntro(); 
app.addWindowListener( 
new WindowAdapter() { 
public void windowClosing( WindowEvent e ) 
{ 
app.shutDown(); 
System.exit( 0 ); 
} 
} 
); 
} 
}

 

线程实验

标签:style   blog   io   ar   color   os   sp   java   for   

原文地址:http://www.cnblogs.com/ketang/p/4125754.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!