这就是线程

来源:互联网 发布:英雄无敌3括号数据 编辑:程序博客网 时间:2024/06/05 00:50

进程,线程,高并发概念.
进程:在操作系统之中一个程序的执行周期就成为一个进程;进程要用到IO,cpu,内存.windows,多个程序可以一起执行,所以windows系统属于多进程的操作系统.
线程:在进程地基础上进一步划分,也就是说线程是比进程更小的单位.
很明显线程所花费的时间比进程短,也就是说进程比线程慢.
java本身是一个多线程的编程语言,所以其执行的性能一定很快.
高并发:指的是访问的线程量爆高,高并发的最直白的问题就是:服务的内存不够用的,无法处理新用户.

想要实现多线程,必须有一个线程的执行主类.

要想实现一个线程的主类,有两类途径(三种实现模式):
1,继承一个thread类
2,实现Runnable,Callable接口.
start()方法是在Thread类中定义,run()方法是在Runnable接口中定义,所有类必须实现run()方法,多线程的启动永远都必须使用Thread类的start()方法。

线程休眠:让线程暂缓一下执行,等到了预计时间之后再回复执行.
· 方法:public static void sleep(long millis) throws InterruptedException; |- 休眠的时间使用毫秒作为单位。
面试题:Thread类与Runnable接口实现多线程的区别

1. 

Thread是Runnable接口的子类,覆写了Runnable接口的run()方法,Thread类的构造方法可以直接接收Runnable接口类型;

1. 

start()方法由Thread类定义,不管使用何种方式实现多线程,最终都必须使用Thread类的start()方法启动多线程;

2. 

Runnable接口使用更方便,可以避免Thread类的单继承局限;

3. 

Runnable接口能更好的表现出数据共享的概念。

线程相关
取得当前线程:Thread.currentThread().getName();
JAVA运行最少保留线程,一个是main,一个是gc
线程优先级:
setPriority(int grade)、getPriority()。三个优先级:高-10 中-5 低-1
main线程的优先级是中等

线程的同步与死锁(卖票案例)
同步关键字synchronized,如果多个线程访问同一个资源(数据共享),就必须考虑同步,但是同步过多可能造成死锁。
锁有两种:可以锁方法,可以锁对象;
异步处理:速度快,但是线性不安全,容易出现数据不完整.

面试题:wait()与sleep()的区别

1. 

两个方法都抛出异常:interruptedException

1. 

wait()是Object类定义的方法,而sleep()是Thread类定义的方法

2. 

wait()等待后需要通过方法notify()和notifyAll()唤醒,而sleep到指定时间自动唤醒。

注意:super.wait()指的是当前调用线程等待,而不是让其他线程等待,而notify唤醒指的是让其他线程唤醒


线程池
线程池给开发者带来唯一的好处是允许多个线程按照组的模式进行程序的处理,这样在某一个业务逻辑非常复杂的环境下,性能就会得到很好的提升。

原创粉丝点击