继承--同步代码块
class MyThread implements Runnable{
int i = 100 ;
public void run(){
while(true){
synchronized(this){ //同步代码块,this相当于同步锁
//Thread.currentThread();
System.out.println(Thread.currentThread().getName() + i );
i--;
Thread.yield();
if(i<0)
break;
}
}
}
}
/*
当有同步代码块的时候,如果a线程拿到了同步锁,那么就算b线程在中间有执行的机会,也要等到
a将同步代码块中的代码执行完再继续执行,这样就保证了线程中数据的安全
*/
class Test{
public static void main(String[] args){
MyThread myThread = new MyThread();
//生成两个Thread对象,但是这两个Thread对象共用一个线程体
Thread t1 = new Thread(myThread);
Thread t2 = new Thread(myThread);
//每个线程都有名字,可以通过Thread对象的setName()方法设置线程的名字,也可以用getName()方法获取线程的名字
t1.setName("线程a");
t2.setName("线程b");
//启动线程
t1.start();
t2.start();
}
}