class a extends Thread
{
public void run(){}
}
//主方法调用 a a=new a(); a.start();
-------------------------------------------------------
创建线程的第二种方式:实现Runable接口
步骤:
1,定义类实现Runnable接口
2,覆盖Runnable接口中的run方法。
将线程要运行的代码存放在该run方法中。
class a implements Runnable
{
public void run(){}
]
.//主函数调用 a a=new a(); Thread t1 = new Thread(a); a.start();
-----------------------------------面试注意------------------------------
实现方式和继承方式有什么区别呢?
实现方式好处:避免了单继承的局限性。
在定义线程时,建立使用实现方式。
两种方式区别:
继承Thread:线程代码存放Thread子类run方法中。
实现Runnable,线程代码存在接口的子类的run方法。
-----------------------------------------------------------------------
多线程执行懒汉士正确代码:
//懒汉式
class Single
{
private static Single s = null;
private Single(){}
public static Single getInstance()
{
if(s==null)
{
synchronized(Single.class)//此处的类为类的字节码文件对象 本类类名.class 因为方法为静态
{
if(s==null)
//--->A;
s = new Single();
}
}
return s;
}
}
-------------------------------------------