预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共37页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第十章多线程机制本章主要内容:10.1多线程的概念10.1.1程序、进程和多任务10.1.2线程10.1.3多线程10.1.4线程的生命周期与Java的多线程机制线程的状态10.2创建线程对象10.2.1通过继承Thread类创建线程classThread1{ publicstaticvoidmain(Stringargs[]){ testThreadt1=newtestThread("thread1"); testThreadt2=newtestThread("thread2"); t1.start(); t2.start(); } } classtestThreadextendsThread{ publictestThread(Stringstr){ super(str);//调用父类的构造方法为线程对象命名 }publicvoidrun(){ for(inti=0;i<2;i++){ System.out.println(getName()+“在运行阶段"); try{ sleep(1000);//用休眠1000毫秒来区分哪个线程在运行 System.out.println(getName()+“在休眠阶段"); }catch(InterruptedExceptione){} } System.out.println(getName()+"已结束"); } }说明:通过Thread类创建线程子类的格式为:10.2.2通过Runnable接口创建线程例10.2通过Runnable接口运行线程。运行结果如图所示。importjava.awt.*; importjava.applet.Applet; importjava.util.*; importjava.text.DateFormat; publicclassClock2extendsAppletimplementsRunnable{ ThreadclockThread=null; publicvoidinit(){ setBackground(Color.blue); setForeground(Color.yellow); }publicvoidstart(){ if(clockThread==null){ clockThread=newThread(this,"Clock2"); clockThread.start(); } } publicvoidrun(){ ThreadmyThread=Thread.currentThread(); while(clockThread==myThread){ repaint(); try{ Thread.sleep(1000); } catch(InterruptedExceptione){} } }publicvoidpaint(Graphicsg){ Datedate=newDate(); DateFormatformatter=DateFormat.getTimeInstance(); Stringstr=formatter.format(date); g.drawString(str,5,10); } publicvoidstop(){ clockThread=null; } }两种创建线程方法的比较:10.2.3线程的优先级Thread定义了其中3个常数:例10.3线程优先级的使用。运行结果如图所示。classThread2extendsThread{ publicstaticvoidmain(Stringargs[]){ Thread2[]t=newThread2[4]; for(inti=0;i<4;i++)t[i]=newThread2(); for(inti=0;i<4;i++)t[i].start(); t[1].setPriority(MIN_PRIORITY); t[3].setPriority(MAX_PRIORITY); } publicvoidrun(){ for(inti=0;i<1000000;i++); System.out.println(getName()+"线程的优先级是"+getPriority()+"已计算完毕!"); } }10.3线程的调度与控制2.实例方法10.3.2控制线程的状态10.4线程的同步机制与共享资源例10.4生产者和消费者线程同步化问题。使用某种资源的线程称为消费者,产生或释放这个资源的线程称为生产者。生产者生成10个整数(0~9),存储到一个共享对象中,并把它们打印出来。每生成一个数就随机休眠0~100毫秒,然后重复这个过程。一旦这10个数可以从共享对象中得到,消费者将尽可能快地消费这10个数,即把它们取出后打印出来。这个模型由4个程序组成。1.生产者程序