public void run()
{
while(true)
{
System.out.println(Thread.currentThread().getName()+":"+index++);
//yield(); //允许当前线程停止,转去执行其他线程,静态方法
//mt进程执行时,切换到main进程,main进程执行一段时间后,
//切换进程到mt,mt执行完获取名字后,返回到main进程
}
}
*/
}
//一个长时间处于等待状态的线程也有可能被线程调度器调度,从而运行,
//打破高优先级线程始终获有运行时间的状态
//如果不需要修改Thread类的除了run方法外的其他方法,选用implements Runnable.
———————————————————————————————————————
———————————TicketsSystem.java———————————————————
//多线程实现火车票的售票系统 .用同步块,或着同步方法
class TicketsSystem
{
public static void main(String[] args) //运行结果与教程中不同,不完全顺序,每次运行,顺序都不完全一样
{
SellThread st=new SellThread();//创建四个线程访问同一变量tickets.
// 错 SellThread st1=new SellThread();//若采用创建四个对象的方式,则每个对象中都有100张票
new Thread(st).start(); //b为false,用的同步方法 | //同步方法与同步块共用中,显示的是只调用了同步块,而同步方法未被调用
//b为true,用的同步块, | //原因,启动第一个线程后,CPU时间片没有到期,线程没有立即运行,接着执行b=true,
// | //解决办法,启动第一个线程后,执行一个睡眠时间,让CPU时间片到期
try
{
Thread.sleep(1);
}
catch(Exception e)
{
e.printStackTrace();
}
st.b=true;
new Thread(st).start();
//new Thread(st).start();
//new Thread(st).start();
}
}