现在的位置: 首页 > 综合 > 正文

JAVA100例

2013年10月28日 ⁄ 综合 ⁄ 共 27130字 ⁄ 字号 评论关闭
[JAVA100例]001、Hello,Java
  
  --------------------------------------------------------------------------------
  
  public class HelloWorld {
   public static void main(String[] args) {
   System.out.println("Hello Java World!");
   }
   }
  [JAVA100例]002、Java流程控制
  
  --------------------------------------------------------------------------------
  
  public class flowDemo{
   public static void main(String[] arges){
   int iPara1,iPara2,iEnd;
   if(arges.length!=3)
   {
   System.out.println("USE :java flowDome parameter1 parameter2 circle");
   System.out.println("parameter1 : 比较条件1,数字类型");
   System.out.println("parameter2 : 比较条件2,数字类型");
   System.out.println("circle :循环次数");
   System.out.println("ego:java flowDome 1 2 5");
   return;
   }else{
   iPara1 = Integer.parseInt(arges[0]);
   iPara2 = Integer.parseInt(arges[1]);
   iEnd = Integer.parseInt(arges[2]);
   }
   //if语句
   if(iPara2>iPara1)
   {
   System.out.println("if 条件满足!");
   System.out.println("第2个数比第1个数大!");
   }
   else
   {
   System.out.println("if 条件不满足!");
   System.out.println("第2个数比第1个数小!");
   }
   //for循环操作
   for(int i=0;i   {
   System.out.println("这是for 第"+i+"次循环");
   }
   //while循环操作
   int i=0;
   while(i   {
   System.out.println("这是while 第"+i+"次循环");
   i++;
   }
   //do-while循环操作
   int j=0;
   do
   {
   System.out.println("这是do-while 第"+j+"次循环");
   j++;
   }while(j   }
   }  
  [JAVA100例]003、数组数据操作
  
  --------------------------------------------------------------------------------
  
  
  public class myArray{
   //初始化数组变量
   char[] cNum = {´1´,´2´,´3´,´4´,´5´,´6´,´7´,´8´,´9´,´0´};
   char[] cStr = {´a´,´b´,´c´,´d´,´e´,´f´,´g´,´h´,
   ´i´,´j´,´k´,´l´,´m´,´n´,´o´,´p´,
   ´q´,´r´,´s´,´t´,´u´,´v´,´w´,´x´,´y´,´z´};
   int[] iMonth = {31,28,31,30,31,30,31,31,30,31,30,31};
   String[] sMail = {"@","."};
  /**
   *
方法说明:校验电子邮件
   *
输入参数:String sPara 被校验的电子邮件字符
   *
返回类型:boolean 如果校验的格式符合电子邮件格式返回true;否则返回false
   */ 
   public boolean isMail(String sPara){
   for(int i=0;i   if(sPara.indexOf(sMail[i])==-1)
   return false; 
   }
   return true;
   }
  /**
   *
方法说明:判断是否是数字
   *
输入参数:String sPara。 需要判断的字符串
   *
返回类型:boolean。如果都是数字类型,返回true;否则返回false
   */ 
   public boolean isNumber(String sPara){
   int iPLength = sPara.length();
   for(int i=0;i   char cTemp = sPara.charAt(i);
   boolean bTemp = false;
   for(int j=0;j   if(cTemp==cNum[j]){
   bTemp = true;
   break;
   }
   }
   if(!bTemp) return false; 
   }
   return true;
   }
  /**
   *
方法说明:判断是否都是英文字符
   *
输入参数:String sPara。要检查的字符
   *
返回类型:boolean。如果都是字符返回true;反之为false
   */ 
   public boolean isString(String sPara){
   int iPLength = sPara.length();
   for(int i=0;i   char cTemp = sPara.charAt(i);
   boolean bTemp = false;
   for(int j=0;j   if(cTemp==cStr[j]){
   bTemp = true;
   break;
   }
   }
   if(!bTemp) return false; 
   }
   return true;
   }
  /**
   *
方法说明:判断是否是闰年
   *
输入参数:int iPara。要判断的年份
   *
返回类型:boolean。如果是闰年返回true,否则返回false
   */ 
   public boolean chickDay(int iPara){
   return iPara%100==0&&iPara%4==0;
   }
  /**
   *
方法说明:检查日期格式是否正确
   *
输入参数:String sPara。要检查的日期字符
   *
返回类型:int。0 日期格式正确,-1 月或这日不合要求, -2 年月日格式不正确 
   */
   public int chickData(String sPara){
   boolean bTemp = false;
   //所输入日期长度不正确
   if(sPara.length()!=10) return -2;
   //获取年
   String sYear = sPara.substring(0,4);
   //判断年是否为数字
   if(!isNumber(sYear)) return -2;
   //获取月份
   String sMonth = sPara.substring(5,7);
   //判断月份是否为数字
   if(!isNumber(sMonth)) return -2;
   //获取日
   String sDay = sPara.substring(8,10);
   //判断日是否为数字
   if(!isNumber(sDay)) return -2;
   //将年、月、日转换为数字
   int iYear = Integer.parseInt(sYear);
   int iMon = Integer.parseInt(sMonth);
   int iDay = Integer.parseInt(sDay);
   if(iMon>12) return -1;
   //闰年二月处理
   if(iMon==2&&chickDay(iYear)){
   if(iDay>29) return 2;
   }else{
   if(iDay>iMonth[iMon-1]) return -1;
   }
   return 0;
   }
  /**
   *
方法说明:主方法,测试用
   *
输入参数:
   *
返回类型:
   */ 
   public static void main(String[] arges){
   myArray mA = new myArray();
   //校验邮件地址
   boolean bMail = mA.isMail("tom@163.com");
   System.out.println("1 bMail is "+bMail);
   bMail = mA.isMail("tom@163com");
   System.out.println("2 bMail is "+bMail);
   //演示是否是数字
   boolean bIsNum = mA.isNumber("1234");
   System.out.println("1:bIsNum="+bIsNum);
   bIsNum = mA.isNumber("123r4");
   System.out.println("2:bIsNum="+bIsNum);
   //演示是否是英文字符
   boolean bIsStr = mA.isString("wer");
   System.out.println("1:bIsStr="+bIsStr);
   bIsStr = mA.isString("wer3");
   System.out.println("2:bIsStr="+bIsStr);
   //演示检查日期
   int iIsTime = mA.chickData("2003-12-98");
   System.out.println("1:iIsTime="+iIsTime);
   iIsTime = mA.chickData("2003-111-08");
   System.out.println("2:iIsTime="+iIsTime);
   iIsTime = mA.chickData("2003-10-08");
   System.out.println("3:iIsTime="+iIsTime);
   iIsTime = mA.chickData("2000-02-30");
   System.out.println("4:iIsTime="+iIsTime);
   }
   }
  
   [JAVA100例]005、哈希表(Hashtable)和枚举器
  
  --------------------------------------------------------------------------------
  
  public class RoleRight
   {
   private static Hashtable rightList = new Hashtable();
  /**
   *
方法说明:初始化数据
   *
输入参数:
   *
返回类型:
   */
   public void init()
   {
   String[] accRoleList = {"admin","satrap","manager","user","guest"};
   String[] rightCodeList = {"10001","10011","10021","20011","24011"};
   for(int i=0;i   {
   rightList.put(accRoleList[i],rightCodeList[i]);
   }
   }
  /**
   *
方法说明:获取角色权限代码
   *
输入参数:String accRole 角色名称
   *
返回类型:String 权限代码
   */
   public String getRight(String accRole)
   {
   if(rightList.containsKey(accRole))
   return (String)rightList.get(accRole);
   else
   return null;
   }
  /**
   *
方法说明:添加角色和代码信息
   *
输入参数:String accRole 角色名称
   *
输入参数:String rightCode 角色权限代码 
   *
返回类型:void (无)
   */
   public void insert(String accRole,String rightCode)
   {
   rightList.put(accRole,rightCode);
   }
  /**
   *
方法说明:删除角色权限
   *
输入参数:String accRole 角色名称
   *
返回类型:void(无)
   */
   public void delete(String accRole)
   {
   if(rightList.containsKey(accRole))
   rightList.remove(accRole);
   }
  /**
   *
方法说明:修改角色权限代码
   *
输入参数:String accRole 角色名称
   *
输入参数:String rightCode 角色权限代码 
   *
返回类型:void(无)
   */
   public void update(String accRole,String rightCode)
   {
   //this.delete(accRole);
   this.insert(accRole,rightCode);
   }
  /**
   *
方法说明:打印哈希表中角色和代码对应表
   *
输入参数:无
   *
返回类型:无
   */
   public void print()
   {
   Enumeration RLKey = rightList.keys();
   while(RLKey.hasMoreElements())
   {
   String accRole = RLKey.nextElement().toString();
   print(accRole+"="+this.getRight(accRole));
   }
   }
  /**
   *
方法说明:打印信息(过载)
   *
输入参数:Object oPara 打印的信息内容
   *
返回类型:无
   */
   public void print(Object oPara)
   {
   System.out.println(oPara);
   }
  /**
   *
方法说明:主方法,
   *
输入参数:
   *
返回类型:
   */
   public static void main(String[] args)
   {
   RoleRight RR = new RoleRight();
   RR.init();
   RR.print();
   RR.print("___________________________");
   RR.insert("presider","10110");
   RR.print();
   RR.print("___________________________");
   RR.update("presider","10100");
   RR.print();
   RR.print("___________________________");
   RR.delete("presider");
   RR.print();
   } 
   }//end:)~  
  [JAVA100例]006、类的继承
  
  --------------------------------------------------------------------------------
  
  
  class tree
  {
  /**
   *
方法说明:树的树根
   *
输入参数:
   *
返回类型:
   */
   public void root()
   {
   String sSite = "土壤中";
   String sFunction = "吸收养份";
   print("位置:"+sSite);
   print("功能:"+sFunction);
   }
  /**
   *
方法说明:树的树干
   *
输入参数:
   *
返回类型:
   */
   public void bolo()
   {
   String sSite = "地面";
   String sFunction = "传递养份";
   print("位置:"+sSite);
   print("功能:"+sFunction);
   }
  /**
   *
方法说明:树的树枝
   *
输入参数:
   *
返回类型:
   */
   public void branch()
   {
   String sSite = "树干上";
   String sFunction = "传递养份";
   print("位置:"+sSite);
   print("功能:"+sFunction);
   }
  /**
   *
方法说明:树的叶子
   *
输入参数:
   *
返回类型:
   */
   public void leaf()
   {
   String sSite = "树梢";
   String sFunction = "光合作用";
   String sColor = "绿色";
   print("位置:"+sSite);
   print("功能:"+sFunction);
   print("颜色:"+sColor);
   }
  /**
   *
方法说明:显示信息
   *
输入参数:Object oPara 显示的信息
   *
返回类型:
   */
   public void print(Object oPara)
   {
   System.out.println(oPara);
   }
  /**
   *
方法说明:主方法
   *
输入参数:
   *
返回类型:
   */
   public static void main(String[] arges)
   {
   tree t = new tree();
   t.print("描述一棵树:");
   t.print("树根:");
   t.root();
   t.print("树干:");
   t.bolo();
   t.print("树枝:");
   t.branch();
   t.print("树叶:");
   t.leaf();
   }
  }
  /**
   * 
Title: 柳树参数


   * 
Description: 描述柳树的参数


   * 
Copyright: Copyright (c) 2003


   * 
Filename: 


   * @author 杜江
   * @version 1.0
   */
  class osier extends tree
  {
   /**
   *
方法说明:过载树的树叶
   *
输入参数:
   *
返回类型:
   */
   public void leaf()
   {
   super.leaf();
   String sShape = "长形";
   super.print("形状:"+sShape);
   }
   /**
   *
方法说明:扩展树的花
   *
输入参数:
   *
返回类型:
   */
   public void flower()
   {
   print("哈哈,柳树没有花!!");
   }
  /**
   *
方法说明:主方法
   *
输入参数:
   *
返回类型:
   */
   public static void main(String[] args)
   {
   osier o = new osier();
   o.print("柳树树根:");
   o.root();
   o.print("柳树树干:");
   o.bolo();
   o.print("柳树树枝:");
   o.branch();
   o.print("柳树树叶:");
   o.leaf();
   o.print("柳树花:");
   o.flower();
   }
  }
  
   [JAVA100例]009、异常的捕获和实现自己的异常类
  
  --------------------------------------------------------------------------------
  
  
  /**
   * 
Title: 捕获异常和实现自己的异常类


   * 
Description: 通过继承Exception类来实现自己的异常类。并使用try-catch来捕获这个异常。


   * 
Copyright: Copyright (c) 2003


   * 
Filename: 


   * @version 1.0
   */
  class MyException extends Exception {
   public MyException() {}
   public MyException(String msg) {
   super(msg);
   }
   public MyException(String msg, int x) {
   super(msg);
   i = x;
   }
   public int val() { return i; }
   private int i;
  }
  
  
  
  public class DemoException {
  /**
   *
方法说明:使用MyException类中默认的构造器
   *
输入参数:
   *
返回类型:
   */
   public static void a() throws MyException {
   System.out.println(
   "Throwing MyException from a()");
   throw new MyException();
   }
  /**
   *
方法说明:使用MyException类中带信息的构造器
   *
输入参数:
   *
返回类型:
   */
   public static void b() throws MyException {
   System.out.println(
   "Throwing MyException from b()");
   throw new MyException("Originated in b()");
   }
  /**
   *
方法说明:使用了MyException中有编码的构造器
   *
输入参数:
   *
返回类型:
   */
   public static void c() throws MyException {
   System.out.println(
   "Throwing MyException from c()");
   throw new MyException(
   "Originated in c()", 47);
   }
   public static void main(String[] args) {
   try {
   a();
   } catch(MyException e) {
   e.getMessage();
   }
   try {
   b();
   } catch(MyException e) {
   e.toString();
   }
   try {
   c();
   } catch(MyException e) {
   e.printStackTrace();
   System.out.println("error code: " + e.val());
   }
   }
  } //end :) 
  
   [JAVA100例]044、多线程服务器:每个人都有份
  
  --------------------------------------------------------------------------------
  
  
  // 文件名:moreServer.java
  import java.io.*;
  import java.net.*;
  import java.util.*;
  /**
   * 
Title: 多线程服务器


   * 
Description: 本实例使用多线程实现多服务功能。


   * 
Copyright: Copyright (c) 2003


   * 
Filename: 


   * @version 1.0
   */
  class moreServer
  {
   public static void main (String [] args) throws IOException
   {
   System.out.println ("Server starting...\n"); 
   //使用8000端口提供服务
   ServerSocket server = new ServerSocket (8000);
   while (true)
   {
   //阻塞,直到有客户连接
   Socket sk = server.accept ();
   System.out.println ("Accepting Connection...\n");
   //启动服务线程
   new ServerThread (sk).start ();
   }
   }
  }
  //使用线程,为多个客户端服务
  class ServerThread extends Thread
  {
   private Socket sk;
   
   ServerThread (Socket sk)
   {
   this.sk = sk;
   }
  //线程运行实体
   public void run ()
   {
   BufferedReader in = null;
   PrintWriter out = null;
   try{
   InputStreamReader isr;
   isr = new InputStreamReader (sk.getInputStream ());
   in = new BufferedReader (isr);
   out = new PrintWriter (
   new BufferedWriter(
   new OutputStreamWriter(
   sk.getOutputStream ())), true);
  
  
  
   while(true){
   //接收来自客户端的请求,根据不同的命令返回不同的信息。
   String cmd = in.readLine ();
   System.out.println(cmd);
   if (cmd == null)
   break;
   cmd = cmd.toUpperCase ();
   if (cmd.startsWith ("BYE")){
   out.println ("BYE");
   break;
   }else{
   out.println ("你好,我是服务器!");
   }
   }
   }catch (IOException e)
   {
   System.out.println (e.toString ());
   }
   finally
   {
   System.out.println ("Closing Connection...\n");
   //最后释放资源
   try{
   if (in != null)
   in.close ();
   if (out != null)
   out.close ();
   if (sk != null)
   sk.close ();
   }
   catch (IOException e)
   {
   System.out.println("close err"+e);
   }
   }
   }
  }
  
  
  
   
  
  
  
   
  
  
  
  //文件名:SocketClient.java
  import java.io.*;
  import java.net.*; 
  class SocketThreadClient extends Thread
  {
   public static int count = 0;
  //构造器,实现服务
   public SocketThreadClient (InetAddress addr)
   {
   count++;
   BufferedReader in = null;
   PrintWriter out = null;
   Socket sk = null;
   try{
   //使用8000端口
   sk = new Socket (addr, 8000);
   InputStreamReader isr;
   isr = new InputStreamReader (sk.getInputStream ());
   in = new BufferedReader (isr);
   //建立输出
   out = new PrintWriter (
   new BufferedWriter(
   new OutputStreamWriter(
   sk.getOutputStream ())), true);
   //向服务器发送请求
   System.out.println("count:"+count);
   out.println ("Hello");
   System.out.println (in.readLine ());
   out.println ("BYE");
   System.out.println (in.readLine ());
  
  
  
   }
   catch (IOException e)
   {
   System.out.println (e.toString ());
   }
   finally
   {
   out.println("END");
   //释放资源
   try
   {
   if (in != null)
   in.close ();
   if (out != null)
   out.close ();
   if (sk != null)
   sk.close ();
   }
   catch (IOException e)
   {
   }
   }
   }
  }
  //客户端
  public class SocketClient{
   public static void main(String[] args) throws IOException,InterruptedException
   {
   InetAddress addr = InetAddress.getByName(null);
   for(int i=0;i<10;i++)
   new SocketThreadClient(addr);
   Thread.currentThread().sleep(1000);
   } 
  }
  
  
   [JAVA100例]058、调用存储过程
  
  --------------------------------------------------------------------------------
  
  
  import java.sql.*;
  
  
  
  /**
   * 
Title: JDBC连接数据库


   * 
Description: 本实例演示如何使用JDBC连接Oracle数据库,并演示添加数据和查询数据。


   * 
Copyright: Copyright (c) 2003


   * 
Filename: JDBCSTMConn.java


   * @version 1.0
   */
  public class JDBCSTMConn{
   private static String url="";
   private static String username="";
   private static String password="";
  /**
   *
方法说明:获得数据连接
   *
输入参数:
   *
返回类型:Connection 连接对象
   */ 
   public Connection conn(){
   try {
   //加载JDBC驱动
   Class.forName("oracle.jdbc.driver.OracleDriver");
   //创建数据库连接
   Connection con = DriverManager.getConnection(url, username, password);
   return con;
   }catch(ClassNotFoundException cnf){
   System.out.println("driver not find:"+cnf);
   return null;
   }catch(SQLException sqle){
   System.out.println("can´t connection db:"+sqle);
   return null;
   } catch (Exception e) {
   System.out.println("Failed to load JDBC/ODBC driver.");
   return null;
   }
   }
  /**
   *
方法说明:调用存储过程,察看数据结果
   *
输入参数:Connection con 数据库连接
   *
输入参数:String sql 要执行的SQL语句
   *
返回类型:
   */
   public void execute(Connection con){
   CallableStatement toesUp = null; 
   try { 
   con.setAutoCommit(false); 
   //调用存储过程
   toesUp = con.prepareCall("{call p_test(?)}"); 
   //传递参数给存储过程
   toesUp.setInt(1, 6);
   //执行存储过程
   toesUp.executeQuery();
  
  
  
   Statement stmt = con.createStatement();
   ResultSet rs = (ResultSet) stmt.executeQuery("SELECT * FROM TEST"); 
   while (rs.next()) { 
   String ID = rs.getString(1); 
   String NAME = rs.getString(2); 
   System.out.println(ID+ " " +NAME);
   } 
   rs.close(); 
   } catch (SQLException e) { 
   System.out.println(e);
   try{
   toesUp.close(); 
   con.close();
   }catch(Exception es){System.out.println(es);} 
   }
   }
  
  
  
  /**
   *
方法说明:实例演示
   *
输入参数:
   *
返回类型:
   */
   public void demo(){
   try{
   JDBCSTMConn oc = new JDBCSTMConn();
   Connection conn = oc.conn();
   oc.execute(conn);
   conn.close();
   }catch(SQLException se){
   System.out.println(se);
   }catch(Exception e){
   System.out.println(e);
   }
   
   }
  /**
   *
方法说明:主方法
   *
输入参数:
   *
返回类型:
   */
   public static void main(String[] arg){
   if(arg.length!=3){
   System.out.println("use: java JDBCSTMConn url username password");
   return;
   }
   JDBCSTMConn oc = new JDBCSTMConn();
   oc.url = arg[0];
   oc.username=arg[1];
   oc.password=arg[2];
   oc.demo();
   }
  } 
  
   [JAVA100例]059、事务处理
  
  --------------------------------------------------------------------------------
  
  
  import java.sql.*;
  /**
   * 
Title: JDBC连接数据库


   * 
Description: 本实例演示如何使用JDBC连接Oracle数据库,并演示添加数据和查询数据。


   * 
Copyright: Copyright (c) 2003


   * 
Filename: JDBCConnCommit.java


   * @version 1.0
   */
  public class JDBCConnCommit{
   private static String url="";
   private static String username="";
   private static String password="";
  /**
   *
方法说明:获得数据连接
   *
输入参数:
   *
返回类型:Connection 连接对象
   */ 
   public Connection conn(){
   try {
   //加载JDBC驱动
   Class.forName("oracle.jdbc.driver.OracleDriver");
   //创建数据库连接
   Connection con = DriverManager.getConnection(url, username, password);
   return con;
   }catch(ClassNotFoundException cnf){
   System.out.println("driver not find:"+cnf);
   return null;
   }catch(SQLException sqle){
   System.out.println("can´t connection db:"+sqle);
   return null;
   } catch (Exception e) {
   System.out.println("Failed to load JDBC/ODBC driver.");
   return null;
   }
   }
  
  
  
  /**
   *
方法说明:执行查询SQL语句
   *
输入参数:Connection con 数据库连接
   *
输入参数:String sql 要执行的SQL语句
   *
返回类型:
   */
   public void query(Connection con, String sql) throws SQLException,Exception {
   try{
   if(con==null){
   throw new Exception("database connection can´t use!");
   }
   if(sql==null) throw new Exception("check your parameter: ´sql´! don´t input null!");
   //声明语句
   Statement stmt = con.createStatement();
   //执行查询
   ResultSet rs = stmt.executeQuery(sql); 
   ResultSetMetaData rmeta = rs.getMetaData();
   //获得数据字段个数
   int numColumns = rmeta.getColumnCount();
   while(rs.next())
   {
   for(int i = 0;i< numColumns;i++)
   {
   String sTemp = rs.getString(i+1);
   System.out.print(sTemp+" ");
   }
   System.out.println(""); 
   }
   rs.close();
   stmt.close();
   }catch(Exception e){
   System.out.println("query error: sql = "+sql);
   System.out.println("query error:"+e);
   throw new SQLException("query error");
   }
   }
  /**
   *
方法说明:执行插入、更新、删除等没有返回结果集的SQL语句
   *
输入参数:Connection con 数据库连接
   *
输入参数:String sql 要执行的SQL语句
   *
返回类型:
   */
   public void execute(Connection con, String sql) throws SQLException {
   try{
   if(con==null) return;
   Statement stmt = con.createStatement();
   int i = stmt.executeUpdate(sql); 
   System.out.println("update row:"+i);
   stmt.close();
   }catch(Exception e){
   System.out.println("execute error: sql = "+sql);
   System.out.println(e);
   throw new SQLException("execute error");
   }
   }
  
  
  
  /**
   *
方法说明:实例演示
   *
输入参数:
   *
返回类型:
   */
   public void demo(){
   JDBCConnCommit oc = new JDBCConnCommit();
   Connection conn = oc.conn();
   try{
   conn.setAutoCommit( false );
   String sql = "";
   for(int i=0;i<4;i++){
   sql = "insert into TBL_USER(id,name,password)values(seq_user.nextval,´tom´,´haorenpingan´)";
   oc.execute(conn,sql);
   }
   sql = "select * from TBL_USER where name=´tom´ order by id";
   oc.query(conn,sql);
   sql = "delete from TBL_USER where name=´tom´";
   oc.execute(conn,sql);
   conn.commit();
   }catch(SQLException se){
   try{
   conn.rollback(); 
   }catch(Exception e){
   }
   System.out.println(se);
   }catch(Exception e){ 
   System.out.println(e);
   }finally
   { 
   try{
   conn.close();
   }catch(SQLException e){}
   }
   
   }
  /**
   *
方法说明:主方法
   *
输入参数:
   *
返回类型:
   */
   public static void main(String[] arg){
   if(arg.length!=3){
   System.out.println("use: java JDBCConnCommit url username password");
   return;
   }
   JDBCConnCommit oc = new JDBCConnCommit();
   oc.url = arg[0];
   oc.username=arg[1];
   oc.password=arg[2];
   oc.demo();
   }
  } 
  [JAVA100例]060、继承Thread
  
  --------------------------------------------------------------------------------
  
  /**
   * 
Title: 继承Thread,实现线程


   * 
Description: 通过继承Thread类,实现其run方法,实现自己的线程


   * 
Copyright: Copyright (c) 2003


   * 
Filename: oneThread.java


   * @version 1.0
   */
  public class oneThread extends Thread {
  /**
   *
方法说明:构造器,本类没有使用
   *
输入参数:
   *
返回类型:
   */
  public oneThread() {
   
   }
  /**
   *
方法说明:继承Thread类必须实现的方法,当调用start方法时运行本方法
   *
输入参数:
   *
返回类型:
   */
   public void run() {
   System.out.println("...............oneThread begining................");
   int flag = 0;
   while(true) {
   if(flag==20){
   System.out.println("\n...............oneThread end............. ");
   break;
   }
   for(int i=0;i   System.out.print("*");
   System.out.println("");
   flag++;
   try{
   //睡眠0.1秒
   sleep(100);
   }catch(Exception e){
   } 
   }
   }
  /**
   *
方法说明:主方法。启动本线程
   *
输入参数:
   *
返回类型:
   */
   public static void main(String args[]) {
   new oneThread().start();
   }
  }
  [JAVA100例]061、实现Runnable
  
  --------------------------------------------------------------------------------
  
  /**
   * 
Title: 实现Runnable接口,获得线程。


   * 
Description: 通过实现Runnable接口来获得自己的线程(t2)。


   * 
Copyright: Copyright (c) 2003


   * 
Filename: twothread.java


   * @version 1.0
   */
  public class twothread implements Runnable {
  /**
   *
方法说明:构造器。实际线程,并启动这个线程。
   *
输入参数:
   *
返回类型:
   */
   twothread() { 
   //获取当前的线程
   Thread t1 =Thread.currentThread(); 
   t1.setName("The first main thread"); 
   System.out.println("The running thread:" + t1); 
   //通过将本类(Runnable接口)和名称构造一个线程
   Thread t2 = new Thread(this,"the second thread"); 
   System.out.println("creat another thread"); 
   //启动线程
   t2.start(); 
   try { 
   System.out.println("first thread will sleep"); 
   Thread.sleep(3000); 
   }catch (InterruptedException e) {
   System.out.println("first thread has wrong"); 
   } 
   System.out.println("first thread exit"); 
   } 
  /**
   *
方法说明:线程主体。实现run方法。
   *
输入参数:
   *
返回类型:
   */
   public void run() { 
   try { 
   for (int i=0;i<5;i++) { 
   System.out.println("Sleep time for thread 2:"+i); 
   Thread.sleep(1000); 
   }
   } catch (InterruptedException e) {
   System.out.println("thread has wrong"); 
   }
   System.out.println("second thread exit"); 
   } 
  /**
   *
方法说明:主方法
   *
输入参数:
   *
返回类型:
   */
   public static void main(String args[]) { 
   new twothread(); 
   } 
  }  
  [JAVA100例]062、多线程
  
  --------------------------------------------------------------------------------
  
  /**
   * 
Title: 创建多线程


   * 
Description: 使用构造器,创建多线程。


   * 
Copyright: Copyright (c) 2003


   * 
Filename: multiThread.java


   * @version 1.0
   */
  public class multiThread 
  { 
  /**
   *
方法说明:主方法
   *
输入参数:
   *
返回类型:
   */
   public static void main (String [] args){ 
   new multiThread();
   }
  /**
   *
方法说明:构造器。构造多个线程,并启动它们。
   *
输入参数:
   *
返回类型:
   */
   multiThread(){
   for (int i = 0; i < 5; i++){
   System.out.println("Creating thread "+i);
   innThread mt = new innThread (i); 
   mt.start (); 
   }
   }
  /**
   *
类说明:内部类通过继承Thread实现线程 
   *
类描述:通过构造器参数,区别不同的线程
   */ 
   class innThread extends Thread 
   { 
   int count;
   innThread(int i){
   count=i;
   }
  /**
   *
方法说明:内部类线程主体,继承Thread必须实现的方法。
   *
输入参数:
   *
返回类型:
   */
   public void run () 
   { 
   System.out.println("now "+count+" thread is beginning..... ");
   try{
   sleep(10-count);
   }catch(Exception e){
   System.out.println(e);
   }
   System.out.println("\n"+count+" thread is end!");
   } 
   } 
  }  
  [JAVA100例]063、线程群组
  
  --------------------------------------------------------------------------------
  
  /**
   * 
Title: 线程组群


   * 
Description: 通过线程组管理下面的多个线程。


   * 
Copyright: Copyright (c) 2003


   * 
Filename: myThreadgroup.java


   * @version 1.0
   */
  public class myThreadgroup extends Thread {
   public static int flag=1;
   ThreadGroup tgA;
   ThreadGroup tgB;
  /**
   *
方法说明:主方法
   *
输入参数:
   *
返回类型:
   */
   public static void main(String[] args){
   myThreadgroup dt = new myThreadgroup();
   //声明线程组A
   dt.tgA = new ThreadGroup("A");
   //声明线程组B
   dt.tgB = new ThreadGroup("B");
   for(int i=1;i<3;i++)
   new thread1(dt.tgA,i*1000,"one"+i);
   for(int i=1;i<3;i++)
   new thread1(dt.tgB,1000,"two"+i);
   //启动本线程和所有线程组
   dt.start();
   }
  /**
   *
方法说明:覆盖run方法,控制线程组
   *
输入参数:
   *
返回类型:
   */
   public void run(){
   try{
   this.sleep(5000);
   this.tgB.checkAccess();
   //停止线程组B,
   this.tgB.stop();
   System.out.println("**************tgB stop!***********************");
   this.sleep(1000);
   //检查线程组A是否可以更改
   this.tgA.checkAccess();
   //停止线程组A
   this.tgA.stop();
   System.out.println("**************tgA stop!***********************");
   
   }catch(SecurityException es){
   System.out.println("**"+es);
   }catch(Exception e){
   System.out.println("::"+e);
   }
   }
  }
  /**
   * 
Title: 线程类


   * 
Description: 通过构造器的参数,实现不同的线程


   * 
Copyright: Copyright (c) 2003


   * 
Filename: thread1.java


   * @author 杜江
   * @version 1.0
   */
  class thread1 extends Thread {
   int pauseTime;
   String name;
   public thread1(ThreadGroup g,int x, String n) {
   super(g,n);
   pauseTime = x;
   name = n;
   start();
   }
  /**
   *
方法说明:必须覆盖的方法。
   *
输入参数:
   *
返回类型:
   */
   public void run () 
   {
   while(true) {
   try {
   System.out.print(name+"::::");
   this.getThreadGroup().list();//获取线程组信息
   Thread.sleep(pauseTime);
   } catch(Exception e) {
   System.out.println(e);
   }
   }
   }
  }
  [JAVA100例]064、线程间通讯
  
  --------------------------------------------------------------------------------
  
  /**
   * 
Title: 线程间合作


   * 
Description: 本实例使用二个线程共同合作绘制一个实体三角。


   * 
Copyright: Copyright (c) 2003


   * 
Filename: mainThread.java


   * @version 1.0
   */
  public class mainThread{
   public static int flag = 0;
   int count = 10;
  /**
   *
方法说明:主方法
   *
输入参数:
   *
返回类型:
   */
   public static void main(String[] arg){
   new mainThread();
   }
  /**
   *
方法说明:构造器,启动两个子线程。
   *
输入参数:
   *
返回类型:
   */
   mainThread(){
   thread1 t1 = new mainThread.thread1(this.count);
   thread2 t2 = new mainThread.thread2(this.count);
   //启动两线程
   t1.start();
   t2.start();
   //让线程一首先工作。
   flag = 1;
   }
  /**
   *
类说明:内部类,继承了Thread,
   *
类描述:实现了在输出每行前面的空格。
   */
   class thread1 extends Thread{
   int count1 = 0; 
   thread1(int i){
   count1 = i;
   }
   public void run(){
   
   while(true){
   if(count1<=0) break;
   if(mainThread.flag==1){
   
   for(int i=0;i   System.out.print(" ");
   }
   count1--;
   mainThread.flag=2;
   }
   }
   }
   }
  /**
   *
类说明:内部类,继承了Thread,
   *
类描述:实现了在输出每行第“*”号。并提供换行。
   */
   class thread2 extends Thread{
   int count2 = 0; 
   thread2(int i){
   count2 = i;
   }
   public void run(){
   int count = 0;
   while(true){
   if(count>=count2) break;
   if(mainThread.flag==2){
   for(int i=0;i<(count*2+1);i++){
   System.out.print("*");
   }
   System.out.print("\n");
   count++;
   mainThread.flag=1;
   }
   }
   }
   } 
  }  
  [JAVA100例]065、线程同步
  
  --------------------------------------------------------------------------------
  
  
  /**
   * 
Title: 线程同步


   * 
Description: 通过使用同步锁实现对共享数据的操作


   * 
Copyright: Copyright (c) 2003


   * 
Filename: SyThreadDemo.java


   * @version 1.0
   */
  /**
   *
类说明:主程序
   *
功能描述:构造两个线程,并启动它们
   */
  public class SyThreadDemo 
  { 
   public static void main (String [] args) 
   { 
   trade ft = new trade (); 
   addThread tt1 = new addThread (ft, "add"); 
   decThread tt2 = new decThread (ft, "dec"); 
   tt1.start (); 
   tt2.start (); 
   } 
  }
  /**
   *
类说明:同步类
   *
功能描述:保存共享数据,
   */
  class trade 
  { 
   private String transName; 
   private double amount; 
  /**
   *
方法说明:更新数据
   *
输入参数:String transName 操作名称
   *
输入参数:double amount 资金数量
   *
返回类型:
   */
   synchronized void update (String transName, double amount) 
   { 
   this.transName = transName; 
   this.amount = amount; 
   System.out.println (this.transName + " " + this.amount); 
   } 
  } 
  /**
   *
类说明:添加资金
   *
功能描述:单线程,调用trade.update()方法,修改数据
   */
  class addThread extends Thread 
  { 
   private trade ft; 
   addThread (trade ft, String name) 
   { 
   super (name);
   this.ft = ft; 
   } 
   public void run () 
   { 
   for (int i = 0; i < 10; i++) 
   ft.update ("add", 2000.0); 
   } 
  } 
  /**
   *
类说明:减少资金
   *
功能描述:单线程,调用trade.update()方法,修改数据
   */
  class decThread extends Thread 
  { 
   private trade fd; 
   decThread (trade fd, String name) 
   { 
   super (name);
   this.fd = fd; 
   } 
  /**
   *
方法说明:线程主体
   *
输入参数:
   *
返回类型:
   */
   public void run () 
   { 
   for (int i = 0; i < 10; i++) 
   fd.update ("dec", -2000.0); 
  
  
  
   } 
  } 
  [JAVA100例]066、线程控制
  
  --------------------------------------------------------------------------------
  
  
  /**
   * 
Title: 线程控制


   * 
Description: 实现对线程的控制,中断、挂起、恢复、停止


   * 
Copyright: Copyright (c) 2003


   * 
Filename: threadCtrl.java


   * @version 1.0
   */
  public class threadCtrl{
   public static void main(String [] main){
   new threadCtrl();
   }
  /**
   *
方法说明:构造器,控制其它线程
   *
输入参数:
   *
返回类型:
   */
   threadCtrl(){
   try{
   Thread tm = Thread.currentThread();
   threadchild td = new threadchild();
   td.start();
   tm.sleep(500);
   System.out.println("interrupt child thread");
   td.interrupt();
  
  
  
   System.out.println("let child thread wait!");
   //td.wait();
   //td.suspend();
   tm.sleep(1000);
  
  
  
   System.out.println("let child thread working");
   td.fauxresume();
   //td.resume();
   tm.sleep(1000);
   td.runflag = false;
   System.out.println("main over..............");
   }catch(InterruptedException ie){
   System.out.println("inter main::"+ie);
   }catch(Exception e){
   System.out.println("main::"+e);
   }
   }
  
  
  
  }
  /**
   *
类说明:被控线程类
   */
   class threadchild extends Thread {
   boolean runflag = true;
   boolean suspended = true;
   threadchild(){
   }
   public synchronized void fauxresume(){
   suspended = false;
   notify();
   } 
   public void run(){
   while(runflag){
   System.out.println("I am working..............");
   try{
   sleep(1000);
   }catch(InterruptedException e){
   System.out.println("sleep::"+e);
   }
   synchronized(this){
   try{
   if(suspended)
   wait();
   }catch(InterruptedException e){
   System.out.println("wait::"+e);
   }
   }
   }
   System.out.println("thread over...........");
   }
   }
  
   [JAVA100例]067、线程优先级
  
  --------------------------------------------------------------------------------
  
  
  import java.util.*;
  /**
   * 
Title: 提高线程优先级


   * 
Description: 通过修改线程的优先级,是线程获得优先处理。


   * 
Copyright: Copyright (c) 2003


   * 
Filename: upPRIThread.java


   * @version 1.0
   */
  public class upPRIThread {
   //主方法
   public static void main(String[] args) throws Exception {
   Thread1 t1 = new Thread1();
   t1.start();
   Thread2 t2 = new Thread2();
   t2.start();
   t1.setPriority(Thread.MIN_PRIORITY);
   t2.setPriority(Thread.MIN_PRIORITY);
   new Thread().sleep(105);
   t2.setPriority(Thread.MAX_PRIORITY);
   new Thread().sleep(10500);
   }
   //类说明:线程1,不更改优先级
   static class Thread1 extends Thread {
   public void run(){
   while(true){
   try {
   Thread.sleep(100);
   } 
   catch (Exception e){
   e.printStackTrace();
   }
   System.out.println("我是线程111");
   }
   }
   }
   //类说明:线程2,提高优先级
   static class Thread2 extends Thread {
  
  
  
   public void run(){
   while(true){
   try {
   Thread.sleep(100);
   } 
   catch (Exception e){
   e.printStackTrace();
   }
   System.out.println("我是线程222.........................");
   }
   }
   }
  }

 

抱歉!评论已关闭.