1、本章重点
线程概念:一个程序里面同一时刻所含有的不同的执行路径,程序的分支
创建和启动
调度,优先级
状态控制
同步,异步
2、进程和线程区别
进程:静态的,exe,class,dos只支持单进程
实质:线程的执行
3、创建和启动
1)实现runnable接口
Thread myThread =newThread(target)//与第二种方法的区别
runnable中只有一个run()方法,用于定义具体线程要执行的方法
thread静态调用
Start():启动线程
实例:
Class Runner1 implements Runnable{
Public void run(){
For(int i=0;i<100;i++){
System.out.println("Runner1:"+i);
}
}
}
Public class TestThread1{
Public static void main (string args[]){
Runner1 r=new Runner1(); //1.1
//r.run();//方法调用,而不是启动一个新线程
Thread t=new thread?//1.2
t.start();//启动
For(int i=0;i<100;i++){
System.out.println("main thread…."+i);
}
}
}
2)直接继承自thread
Public Runner1 extends Thread{
Public void run(){
For(int i=0;i<100;i++)
{
System.out.prinln("Runner1:"+i);
}
}
}
由于已经继承自thread,所以,在主线程main中不需要再newthread,只需要启动start就可以了
4、状态控制
知识点:1、sleep:thread的静态方法——异常:interruptedException
2、join方法:线程合并,本应多线程同时进行的,但是Join方法,等待另一个线程执行完后,再返回当前线程继续执行,好像只有一个线程
3、yield();让出CPU,给其他线程执行的机会
5、线程同步——锁机制
Public void add (string name){
Synchronized(this){
方法体
}
}
简写:
publicsynchronizaed void add(string name){}
注意事项:
锁定的对象不是完全锁定,只是被锁定的方法不能被访问,没有被锁定的方法还是可以被执行,所以如果涉及到改变值大小的问题,需要在每个方法上都加上锁。
以上是有关线程中涉及到的相关知识,针对于软考来说,只需了解线程和进程的基本概念即可,具体的代码可以先不用深入了解。此外,关于操作系统中涉及到的其他知识,可以参考自考操作系统概论,里面还涉及到磁盘读写,文件读写,PV操作,所机制(生产者和消费者问题)