线程基础,线程之间的共享和协作
时间片轮询?
在计算机基础知识里有cpu时间轮转机制 也叫作RR调度,即给每一个进程分配一个时间段,这个时间段为一个进程的生命,在时间段结束后,操作系统就把进程把杀死了。时间片每一次切换都会浪费较多的时间,故应该少切换,减少对程序的影响。
进程与线程?
在一个进程内部可以有多个线程,多个线程共享一个进程的资源,而进程与进程之间是相互独立的。线程自己不拥有系统资源,必须依附于某一个进程中。故线程创建的时候,都需要创建一个进程。
并行与并发的区别?
并行:同一时刻可以处理事情的能力。
并发:单位时间内可以处理事情的能力。
简而言之就是并发是多个事件在同一时间段执行,而并行是多个事件在同一时间点执行。
使用并发编程可以让代码更加模块化,异步化的处理。
高并发环境下操作同一个线程带来的问题?
共享资源,多线程之间控制不好冲突,死锁问题;太多的线程就有可能搞垮机器。
怎么创建一个新的线程?
有三种 继承Thread类,实现runnable接口,实现callable接口
前面两种就不必介绍了,第三种callalbe接口的是实现代码如下:
public class NewThread implements Callable<String>{
@Override
public String call() throws Exception {
// TODO Auto-generated method stub
return "hello wolrd!!";
}
public static void main(String []args) throws InterruptedException, ExecutionException
{
NewThread nt=new NewThread();
//需要包装为runnable来放入Thread类
FutureTask<String> futureTask=new FutureTask<>(nt);//由于futureTask实现了runnable接口
//所以可以将他递交给线程来运行
Thread t=new Thread(futureTask);
t.start();
futureTask.get();//拿到callable的返回值
System.out.println(futureTask.get());
}