1、继承Thread
TestThread类
public class TestThread extends Thread{
private int ticket = 300;
@Override
public void run() {
while(true){
try {
Thread.sleep(10);
} catch (Exception e) {
e.printStackTrace();
}
sale();
if(ticket <= 0)
break;
}
}
public synchronized void sale(){
if(ticket > 0){
System.out.println(Thread.currentThread().getName() +"-->"+ ticket--);
}
}
}
2、Runable接口
TestRunable类
package mytestthread;
public class TestRunable implements Runnable{
public int tic = 300;
@Override
public void run() {
while(true){
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
sale();
if(tic <= 0)
break;
}
}
public synchronized void sale(){
if(tic > 0){
System.out.println(Thread.currentThread().getName() + "--" + tic--);
}
}
}
3、main函数
package mytestthread; public class MyThead{ /** * @param args */ public static void main(String[] args) { /*TestRunable t1 = new TestRunable(); Thread thread1 = new Thread(t1, "te1"); Thread thread2 = new Thread(t1, "te2"); Thread thread3 = new Thread(t1, "te3"); Thread thread4 = new Thread(t1, "te4"); thread1.start(); thread2.start(); thread3.start(); thread4.start();*/ TestThread t = new TestThread(); Thread aa =new Thread(t,"aa"); Thread bb =new Thread(t,"bb"); Thread cc =new Thread(t,"cc"); aa.start(); bb.start(); cc.start(); } }
看了几篇文章感觉没达到资源共享的目的,资源共享需要synchronized锁,并且需要同一个对象才有效。