如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
线程
程序是由若干条语句组成的语句序列,是一段静态代码。
进程是程序的一次动态执行过程。
一个线程是一个程序内部的顺序执行控制流。
线程和进程
多进程:在操作系统中,能同时运行多个程序(任务)。
多线程:在同一应用程序中,有多个顺序流同时执行。
每个进程都有独立的代码和数据空间(进程上下文),进程切换的开销大。
线程:轻量的进程,同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换的开销小。线程的概念模型线程体线程的状态(四态)创建状态(newThread)
ThreadmyThread=newMyThreadClass();
可运行状态(Runnable)
ThreadmyThread=newMyThreadClass();
myThread.start();
不可运行状态(NotRunnable)
调用了sleep()方法;
调用了suspend()方法;
为等候一个条件变量,线程调用wait()方法;
输入输出流中发生线程阻塞;
死亡状态(Dead)
线程的终止一般可通过两种方法实现:自然撤消(线程执行完)或是被停止(调用stop()方法)。线程体的构造构造线程体的2种方法
定义一个线程类,它继承类Thread并重写其中的方法run();
创建一个实现Runnable接口的类作为线程的目标对象,在初始化一个Thread类或者Thread子类的线程对象时,把目标对象传递给这个线程实例,由该目标对象提供线程体run()。publicThread(Runnabletarget)通过继承类Thread构造线程体 System.out.println("DONE!"+getName());
}
}
publicclassTwoThreadsTest{
publicstaticvoidmain(Stringargs[]){
newSimpleThread("First").start();
newSimpleThread("Second").start();
}
}
0First
0Second
1Second
1First
2First
2Second
3Second
3First
4First
4Second
5First
5Second
6Second 6First
7First
7Second
8Second
9Second
8First
DONE!Second
9First
DONE!First
通过接口构造线程体 publicvoidrun(){
while(clockThread!=null){
repaint();
try{
clockThread.sleep(1000);
}catch(InterruptedExceptione){}
}
}
publicvoidpaint(Graphicsg){
Datenow=newDate();
g.drawString(now.getHours()+":"+now.getMinutes()+ ":" +now.getSeconds(),5,10);
}
publicvoidstop(){
clockThread.stop();
clockThread=null;
}
}两种方法的比较线程的调度下面几种情况下,当前线程会放弃CPU:
线程调用了yield()或sleep()方法主动放弃;
由于当前线程进行I/O访问,外存读写,等待用户输入等操作,导致线程阻塞;
为等候一个条件变量,线程调用wait()方法;
抢先式系统下,由高优先级的线程参与调度;时间片方式下,当前时间片用完,由同优先级的线程参与调度。线程的优先级classThreadTest{
publicstaticvoidmain(Stringargs[]){
Threadt1=newMyThread("T1");
t1.setPriority(Thread.MIN_PRIORITY);
t1.start();
Threadt2=newMyThread("T2");
t2.setPriority(Thread.MAX_PRIORITY);
t2.start();
Threadt3=newMyThread("T3");
t3.setPriority(Thread.MAX_PRIORITY);
t3.start();
}
}classMyThreadextendsThread{
Stringmessage;
MyThread(Stringmessage){
this.message=message;
}
publicvoidrun(){
for(inti=0;i<3;i++)
System.ou
as****16
实名认证
内容提供者
最近下载