簡單的概括下多線程的用法
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;
}
}
多線程


































































































































































對象流的存儲。。。


























































































保存對象引用問題
一個經理共享一個秘書和一個雇員
。





























































































適合初學者看的克隆 一看就懂























