public void run() //复习run方法
{
int x=1;
while(x<=10)
{
System.out.println(Thread.currentThread().getName()+"....."+x);//打印正在运行的线程
x++;
}
}
}
class Test
{
public static void main(String[] String)
{
new ThreadDemo().start();//创建第一个线程并运行
new ThreadDemo().start();//创建第二个线程并运行
new ThreadDemo().start();//创建第三个线程并运行
}
}
同步函数
同步函数只需要在方法前加synchronized修饰即可
同步非静态方法的锁是 this
而同步静态方法的锁是 类名.Class() 因为静态进入内有存时,还没本类对象,只有该类对应的字节码文件对象。
*/
//解决上述程序的线程安全性问题。
//代码如下:
class ThreadDemo3 implements Runnable
{
private int tick=10;
//复写Runnable接口的run方法
public void run()
{
while(true)
{
//让线程暂停一会儿后自动回去可执行状态
try{Thread.sleep(100);}catch(Exception e){}
synchronized(new Object())
{
if(tick>0)
{
System.out.println(Thread.currentThread().getName()+"...."+tick--);
}
}
}
}
}
class Test3
{
public static void main(String[] args)
{
ThreadDemo3 th=new ThreadDemo3();
new Thread(th).start();
new Thread(th).start();
new Thread(th).start();
}
}