|
Posted on 2007-10-09 00:25 Java蜘蛛人 --鄭成橋 閱讀(381) 評論(0) 編輯 收藏
簡單的概括下多線程的用法
多線程
class NewThread implements Runnable

  {

Thread t;

NewThread()

 {

t=new Thread(this);

System.out.println ("NewTread 啟動了啊");

t.setPriority(3);

t.start();

}

public void run()

 {

try

 {

for(int i=5;i>0;i--)

System.out.println ("NewThread:"+i);

Thread.sleep(500);

}

catch(Exception e)

 {

e.printStackTrace();

}

}

}

class Test2 extends Thread

  {

Thread t;

Test2()

 {

t=new Thread(this);

System.out.println ("Test啟動了");

t.setPriority(4);

t.start();

}

public void run()

 {

try

 {

for(int i=5;i>0;i--)

System.out.println ("Test2::"+i);


}

catch(Exception e)

 {

e.printStackTrace();

}

}

}

public class ThreadDemo implements Runnable

  {

Thread a;

ThreadDemo()

 {

a=new Thread(this);

System.out.println ("執行到main外");

a.setPriority(5);

a.start();

}

static int aa=0;

public void run()

 {

try

 {

System.out.println ("main::開始了啊");

for(int i=5;i>0;i--)

System.out.println ("main:"+i);

if(aa++==2)

a.yield();a.sleep(1000);

}

catch(Exception e)

 {

e.printStackTrace();

}

}

public static void main (String[] args)

 {

new NewThread();

new Test2();

new ThreadDemo();

}

}

對象流的存儲。。。
import java.util.*;
import java.io.*;
public class ObjectFileTest
  {
public static void main (String[] args)
 {
Manager boss=new Manager("xiaoqiao",80000,2008,05,06);
boss.setBoss(5000);
System.out.println (boss);
Employee [] staff=new Employee[3];
staff[0]=boss;
staff[1]=new Employee("xiongdi",8,2007,05,06);
staff[2]=new Employee("asd",1000,2004,05,06);
try
 {
ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream("zcq.doc"));
out.writeObject(staff);
out.close();
ObjectInputStream in=new ObjectInputStream(new FileInputStream("zcq.doc"));
Employee[] newStaff=(Employee[])in.readObject();
in.close();
for(Employee e:newStaff)
System.out.println (e);
}
catch(Exception e)
 {
e.printStackTrace();
}
}
}
class Employee implements Serializable
  {
private String name;
private double salary;
private Date hireDay;
public Employee()
 {
}
public Employee(String n,double s,int year,int month,int day)
 {
name=n;
salary=s;
GregorianCalendar calendar=new GregorianCalendar(year,month-1,day);
hireDay=calendar.getTime();
}
public String getName()
 {
return name;
}
public double getSalary()
 {
return salary;
}
public Date getHireDay()
 {
return hireDay;
}
public String toString()
 {
return "name:"+name
+" salary:"+salary
+" 時間是:"+hireDay;
}
}
class Manager extends Employee
  {
private double bouss;
public Manager(String n,double s,int year,int month,int day)
 {
super(n,s,year,month,day);
}
public double getSalary()
 {
double aa=super.getSalary();
return aa+bouss;
}
public void setBoss(double b)
 {
bouss=b;
}
public String toString()
 {
return super.toString()+"boss:"+bouss;
}
}

保存對象引用問題
一個經理共享一個秘書和一個雇員
。
import java.util.*;
import java.io.*;
public class ObjectRefTest
  {
public static void main (String[] args)
 {
Employee harry=new Employee("harry asd",5000,1989,10,1);
Manager boss=new Manager("Carl Cracker",8000,1987,12,12);
boss.setSecretary(harry);
Employee[] staff=new Employee[3];
staff[0]=boss;
staff[1]=harry;
staff[2]=new Employee("zcq123",8000,1990,3,15);
try
 {
ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream("zcq.doc"));
out.writeObject(staff);
out.close();
ObjectInputStream in=new ObjectInputStream(new FileInputStream("zcq.doc"));
Employee[] newStaff=(Employee[])in.readObject();
in.close();
newStaff[1].ticheng(10);
for(Employee e:newStaff)
 {
System.out.println (e);
}
}
catch(Exception e)
 {
e.printStackTrace();
}
}
}
class Employee implements Serializable
  {
private String name;
private double salary;
private Date hireDay;
 public Employee() {}
public Employee(String n,double s,int year,int month,int day)
 {
name=n;
salary=s;
GregorianCalendar calendar= new GregorianCalendar(year,month-1,day);
hireDay=calendar.getTime();
}
public String getName()
 {
return name;
}
public double getSalary()
 {
return salary;
}
public Date getHireDay()
 {
return hireDay;
}
public void ticheng(double aa)
 {
double bb=salary*aa/100;
salary=salary+bb;
}
public String toString()
 {
return getClass().getName()+" name:"
+name+" salary:"+salary
+" hireday"+hireDay;
}
}
class Manager extends Employee
  {
public Manager(String n,double s ,int year,int month,int day)
 {
super(n,s,year,month,day);
secretary=null;
}
public void setSecretary(Employee s)
 {
secretary=s;
}
public String toString()
 {
return super.toString()+" secretary"+secretary;
}
public Employee secretary;
}

適合初學者看的克隆 一看就懂
public class Test
  {
public static void main (String[] args)
 {
Test1 aa=new Test1();
try
 {
Test1 bb=aa.clone();
}
catch(CloneNotSupportedException e)
 {
e.printStackTrace();
}
}
}
class Test1 implements Cloneable
  {
public Test1 clone() throws CloneNotSupportedException //拋出這個異常 ..
 {
Test1 aa=(Test1)super.clone();
return aa;
}
}

|