|
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;
}
}

|