class ThreadSubName implements Runnable{
private static int num = 5;
public void run(){
while(true){
synchronized(this){
if(num>0){
try{
Thread.sleep(100);
}catch(Exception e){
System.out.println(Thread.currentThread().getName()+"occur error");
}
System.out.println(Thread.currentThread().getName()+ " num="+num--);
} else {
System.out.println(Thread.currentThread().getName()+" exit");
break;
}
}
}
}
}
public class test1 {
public static void main(String[] args){
ThreadSubName t = new ThreadSubName();
new Thread(t).start();
new Thread(t).start();
}
}
///
public class ThreadDemo {
public static void main(String[] args){
ThreadTest1 t1 = new ThreadTest1();
new Thread(t1).start();
new Thread(t1).start();
System.out.println(t1.call());
}
}
class ThreadTest1 implements Runnable{
private int x;
private int y;
//定义同步方法
public synchronized void run(){
for(int i=0;i<4;i++){
x++;
y++;
try{
Thread.sleep(200);
} catch (InterruptedException e){
System.out.println("thread err");
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+" x="+x+",y="+y+" i="+i);
}
}
//自定义的方法,并声明为synchronized
public synchronized String call(){
String name = Thread.currentThread().getName();
return "hello" + name;
}
}