线程中的代码若有循环语句,设置循环条件为false。可使线程安全线束。但在当线程执行循环体语句时,有异常,或者被阻塞,这种情况下又如何控制线程安全的结束呢?作者: 黑马-雷钊 时间: 2013-5-8 01:29
你好,线程我今天才学。但我知道你说的情况。我发一段我今天学的代码你看看 。主要是注释。我感觉只要理解了线程是如何运作的还是比较简单的。
class SynchronizedDemo {
public static void main(String[] args){
Runnable1 r = new Runnable1 ();//创建资源类,只有一个火车站所以只要一个
Thread t1 = new Thread(r);//创建线程对象,并把资源传给它
Thread t2 = new Thread(r);//一共需要4个窗口所以创建4个线程对象
Thread t3 = new Thread(r);
Thread t4 = new Thread(r);
t1.start();//分别开始启动线程
t1.setName("一");//调用setName()方法,分别给线程的取名字
t2.start();
t2.setName("二");
t3.start();
t3.setName("三");
t4.start();
t4.setName("四");
}
}
class Runnable1 implements Runnable {
int p = 100 ;
public void run () {
while (true){
synchronized(this) {//创建一个锁。随意传个对象进区都可以。这样锁的代码块里就只有一个线程能进去了。防止了安全隐患。还同步了
if (p > 0){
try{
Thread.sleep(100);
}
catch (Exception e){
}
System.out.println(Thread.currentThread().getName()+"号窗卖了"+p--);//调用thread类里面的currentThread()方法,返回是哪个线程在执行,最后.getName返回正在执行线程的名字属性
}else{
break;//跳出循环,要不会一直循环的。
}
}