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

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

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

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

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

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

第十三章本章内容什么是线程线程的概念模型线程体创建线程----通过实现Runnable接口(1301)多线程多线程举例多线程共享数据和代码启动线程线程状态转换(ThreadScheduling)线程状态转换举例终止线程控制举例线程控制基本方法join方法用法举例创建线程的第二种方式----继承Thread类两种创建线程方法的比较线程的调度下面几种情况下,当前线程会放弃CPU: 线程调用了yield(),suspend()或sleep()方法主动放弃; 由于当前线程进行I/O访问,外存读写,等待用户输入等操作,导致线程阻塞; 为等候一个条件变量,线程调用wait()方法; 抢先式系统下,有高优先级的线程参与调度;时间片方式下,当前时间片用完,有同优先级的线程参与调度。线程的优先级在Java语言中,引入了对象互斥锁的概念,来保证共享数据操作的完整性。 每个对象都对应于一个可称为“互斥锁”的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象。 关键字synchronized来与对象的互斥锁联系。当某个对象用synchronized修饰时,表明该对象在任一时刻只能由一个线程访问。关键字Synchronized用法举例关键字Synchronized生产者-消费者问题(1)消费者: classConsumerimplementsRunnable{ SyncStackstack; publicConsumer(SyncStacks){ stack=s; } publicvoidrun(){ for(inti=0;i<20;i++){ charc=stack.pop(); System.out.println("消费:"+c); try{ Thread.sleep((int)(Math.random()*1000)); }catch(InterruptedExceptione){} } } }生产者-消费者问题(3)本章内容