package fat.yk.thread;
import java.util.Random;
public class TicketOpration {
public static String a = "";
public static boolean flag=false;
public static boolean flag_1=false;
public void getTicket() {
Thread t_now = Thread.currentThread();
final String t_name = "当前线程:" + t_now.getName();
flag=false;
flag_1=false;
synchronized (a) {
System.out.println(t_name + "获取资源!!");
Runnable r = new Runnable() {
@Override
public void run() {
try {
Thread.sleep(5000);
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
System.out.println("超时异常!!");
}
finally{
flag_1=true;
}
}
};
Runnable r2=new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
try {
Thread.sleep(3000);
if(!flag_1)
{
flag=true;
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
Thread t1=new Thread(r,"t1");
Thread t2=new Thread(r2,"t2");
t1.start();
t2.start();
boolean needLock=true;
while(true)
{
if(flag){
System.out.println("超时啦!!");
t1.interrupt();
needLock=false;
break;
}
if(flag_1)
{
break;
}
}
if(!needLock)
{
System.out.println("释放锁!!!");
}
}
}
}
Thread.interrupt();只能在sleep wait join的时候才有作用!!
Thread.stop已经弃用了。
给点建议!!
import java.util.Random;
public class TicketOpration {
public static String a = "";
public static boolean flag=false;
public static boolean flag_1=false;
public void getTicket() {
Thread t_now = Thread.currentThread();
final String t_name = "当前线程:" + t_now.getName();
flag=false;
flag_1=false;
synchronized (a) {
System.out.println(t_name + "获取资源!!");
Runnable r = new Runnable() {
@Override
public void run() {
try {
Thread.sleep(5000);
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
System.out.println("超时异常!!");
}
finally{
flag_1=true;
}
}
};
Runnable r2=new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
try {
Thread.sleep(3000);
if(!flag_1)
{
flag=true;
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
Thread t1=new Thread(r,"t1");
Thread t2=new Thread(r2,"t2");
t1.start();
t2.start();
boolean needLock=true;
while(true)
{
if(flag){
System.out.println("超时啦!!");
t1.interrupt();
needLock=false;
break;
}
if(flag_1)
{
break;
}
}
if(!needLock)
{
System.out.println("释放锁!!!");
}
}
}
}
Thread.interrupt();只能在sleep wait join的时候才有作用!!
Thread.stop已经弃用了。
给点建议!!