今天我学习了反射与多线程的知识
反射:Class cls1=Date.class//字节码1;
Class cls2=Person.class//字节码2;
P1.getClass();//得到字节码
Class.forName(“java.lang.String”) //得到这个类的字节码
后台线程与联合线程
l 如果我们对某个线程对象在启动(调用start方法)之前调用了setDaemon(true)方法,这个线程就变成了后台线程。
l 对Java程序来说,只要还有一个前台线程在运行,这个进程就不会结束,如果一个进程中只有后台线程运行,这个进程就会结束。
l pp.join()的作用是把pp所对应的线程合并到调用pp.join();语句的线程中。
使用Runnable接口创建多线程
l 适合多个相同程序代码的线程去处理同一资源的情况,把虚拟cpu(线程)同程序的代码、数据有效分离,较好地体现了面向对象的设计思想。
l 可以避免由于Java的单继承特性带来的局限。我们经常碰到这样一种情况,即当我们要将已经继承了某一个类的子类放入多线程中,由于一个类不能同时有两个父类,所以不能用继承Thread类的方式,那么,这个类就只能采用实现Runnable。
l 当线程被构造时,需要的代码和数据通过一个对象作为构造函数实参传递进去,这个对象就是一个实现了Runnable接口的类的实例。
l 事实上,几乎所有多线程应用都可以用Runnable接口方式。
例如:有四个窗口销售100张火车票,
Class TestThread implements Runnable//使用实现Runnable接口的方式,实现代码和数据的分离
{
int tickets=100;
public void run()
{
While(true)
{
If(tickets>0)
System.out.println(Thread.currentThread().getName()+”in salling ticket”+tickets--);
//四个窗口同时卖,相当于四个进程共享tickets变量;四个进程共同使用这一段代码
}
}
}
Public class Test{
&n