文章目录
前言 |
内容 |
可以看出来线程在在进程中的,进程是表示资源分配的的基本概念,又是调度运行的基本单位,是系统中的并发执行的单位。所以线程是不能直接使用的必须在进行中进行.所以二者又以下几点不同
1.调度上
在传统的系统中,拥有资源的最进本单位和独立调度以及分派的基本单位都是进程,而在引用了线程的系统中,把线程作为分派和调度的基本单位,把进程作为资源拥有的基本单位,把线程的两个属性分开,线程就可以轻装运行,提高系统的并发程度.并且不会影响进程,如果是多进程的话需要进程的切换.
2.并发性
未引入线程的单CPU操作系统中,若仅设置一个文件服务进程,当进程因为某种原因阻塞的时候则没有其他进程为其提供相应的服务,二引入了线程之后可以开启多个线程,在同一进程中,这样就算有一个进程在等待,还有后面的线程可以正常运行,提高了文件服务的质量和系统的吞吐量.
3.拥有资源
进程是拥有一个资源的独立单位,
线程本身没有系统资源但是可以获取发昂为其隶属的进程的资源.所以在同一进程中的线程共享进程中的资源
4.系统开销
进程的开销会比线程的要高,对于CPU的占用也较高.
写写线程的应用
//实例一个线程
RunThread runthread = new RunThread();
// 将参数read传入
// 从A属性值中可以拿到的值(可以是多个参数,用逗号隔开)
runthread.setA(read);
// 此为线程中调用方法所在的类setB类将类名写入
runthread.setB(answerService);
// 开始线程
runthread.start();
import com.dmsdbj.integral.brainstorming.provider.service.AnswerService;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.StringUtils;
//@data 注解需要引用
@Data
@Slf4j
public class RunThread extends Thread {
private B b;
private String read;
public RunThread()
{ }
@Override
public void run(){
//线程调用的是B类中的cC方法
b.cC(read);
}
}
}
其他
这是调用的一种写法,还有其他的写法.可以研究一下.
小结 |