当前位置: 首页 > wzjs >正文

新版网站上线济南莱芜都市网

新版网站上线,济南莱芜都市网,wordpress 2.5,网站开发工程师的生活形态1.什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。 2.线程和进程有什么区别? 线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任…
1.什么是线程?

线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。

2.线程和进程有什么区别?

线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务。不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间。

3.如何在Java中实现线程?

一共有三种方式:

1.继承Thread类

2.实现Runnable接口,重写run方法

2.实现Callable接口,重写call方法(可以返回值和抛出异常)

  1. 用Runnable还是Thread?

在java中不支持多继承,支持多实现,如果该类需要继承其它类,则选择Runnable;

5.Thread 类中的start() 和 run() 方法有什么区别?

start()方法被用来启动新创建的线程,使进程就绪状态,而run()方法 ,执行线程,使线程进入运行状态。

6.线程的几种状态

1、新建状态(New):新创建了一个线程对象。

2、就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于“可运行线程池”中,变得可运行,只等待获取CPU的使用权。即在就绪状态的进程除CPU之外,其它的运行所需资源都已全部获得。

3、运行状态(Running):就绪状态的线程获取了CPU,执行程序代码。

4、阻塞状态(Blocked):阻塞状态是线程因为某种原因放弃CPU使用权,暂时停止运行。直到线程进入就绪状态,才有机会转到运行状态。

阻塞的情况分三种:

(1)、等待阻塞:运行的线程执行wait()方法,该线程会释放占用的所有资源,JVM会把该线程放入“等待池”中。进入这个状态后,是不能自动唤醒的,必须依靠其他线程调用notify()或notifyAll()方法才能被唤醒,

(2)、同步阻塞:运行的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入“锁池”中。

(3)、其他阻塞:运行的线程执行sleep()或join()方法,或者发出了I/O请求时,JVM会把该线程置为阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态。

5、死亡状态(Dead):线程执行完了或者因异常退出了run()方法,该线程结束生命周期。

7.线程同步的几种方法

1.synchronized关键字修饰语句块或者修饰方法

2.volatile关键字修饰变量

3.使用重入锁Lock

ReentrantLock类是可重入、互斥、实现了Lock接口的锁,
它与使用synchronized方法和快具有相同的基本行为和语义,并且扩展了其能力

ReenreantLock类的常用方法有:

ReentrantLock() : 创建一个ReentrantLock实例
lock() : 获得锁
unlock() : 释放锁
注:ReentrantLock()还有一个可以创建公平锁的构造方法,但由于能大幅度降低程序运行效率,不推荐使用

4.使用线程本地变量 ThreadLocal

5.使用阻塞队列实现线程同步(java.util.concurrent包中提供的类)

8.volatile与synchronized的区别

1)volatile本质是在告诉jvm当前变量在寄存器中的值是不确定的,需要从主存中读取,synchronized则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住.
2)volatile仅能使用在变量级别,synchronized则可以使用在变量,方法.
3)volatile仅能实现变量的修改可见性,而synchronized则可以保证变量的修改可见性和原子性.

4)volatile不会造成线程的阻塞,而synchronized可能会造成线程的阻塞.

9.终止线程的3中方式

1.线程正常执行完毕,正常退出。

2.使用while()循环在特定条件下退出。

3.使用interrupt方法终止线程。

10.什么是线程池? 为什么要使用它?

创建线程要花费昂贵的资源和时间,如果任务来了才创建线程那么响应时间会变长,而且一个进程能创建的线程数有限。为了避免这些问题,在程序启动的时候就创建若干线程来响应处理,它们被称为线程池,里面的线程叫工作线程。如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。线程池使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务。线程池主要作用是便于管理线程,节约时间与资源。

11.线程死锁

两个或两个以上的线程争夺共享资源,并各自不释放手中的资源,而造成死锁。

解决办法:1.让所有的线程按照一定的顺序获得一组锁;2.将多个锁组成一组并放到一个锁里。

12.sleep()和wait()的区别

sleep()使线程暂停一段时间,占用CUP资源,没用释放锁

wait()使线程进入等待池中,释放CPU资源,释放锁


文章转载自:

http://SC4yeJqs.fgsct.cn
http://GKpYVSye.fgsct.cn
http://6dErSbFz.fgsct.cn
http://WAPTvU59.fgsct.cn
http://Y1BsTpnp.fgsct.cn
http://IIBmphCm.fgsct.cn
http://JZVfZqvq.fgsct.cn
http://R5zxRc50.fgsct.cn
http://6X73rmSc.fgsct.cn
http://XTl0RGir.fgsct.cn
http://rQ9s0xco.fgsct.cn
http://2b22JCp0.fgsct.cn
http://0nXCHx2j.fgsct.cn
http://77IEnlcp.fgsct.cn
http://akFibflE.fgsct.cn
http://vvP9J2MP.fgsct.cn
http://P2dFg6Mb.fgsct.cn
http://8sznArLi.fgsct.cn
http://Ia75RFpy.fgsct.cn
http://0l9Kbhlh.fgsct.cn
http://1NLJR5i2.fgsct.cn
http://Ka2coAzl.fgsct.cn
http://b6OJrgp5.fgsct.cn
http://tNfJj4D1.fgsct.cn
http://w8uH0Cwo.fgsct.cn
http://7llKdEfh.fgsct.cn
http://lEoepVwr.fgsct.cn
http://c33FlUjr.fgsct.cn
http://tk6yunvm.fgsct.cn
http://ZwoT5HOQ.fgsct.cn
http://www.dtcms.com/wzjs/654388.html

相关文章:

  • 记事本里做网站 怎么把字体中文域名交易平台
  • 专业的电商网站建设公司排名黄村网站开发公司电话
  • 同一ip网站建网站要学什么
  • 河北邯郸中考成绩查询网站网店推广的作用有哪些
  • 做seo网站推广价格中国品牌策划公司排名
  • 手机电影网站怎么做的聊城网站建设首选天成网络
  • 企业网站导航下拉菜单怎么做有什么软件做短视频网站好
  • 南充做网站公司礼物说网站模板
  • 如何选择合适的建站公司网页制作和网站制作有什么区别
  • 个人网站建设法律规定平面设计和电商设计
  • 建筑学网站军事新闻最新消息今天报道
  • mooc网站开发案例百度推广业务电话
  • 申请免费网站哪个好wordpress分类自定义文字
  • 长春火车站进站需要核酸检测吗长沙优化网站分析
  • 网站建设 客户定位多语言版本网站
  • 工农区网站建设网站建设投标文件范本
  • 比较好的网站建设公司电话网站主播
  • 网站建设五行深圳品牌网站建设公司哪家好
  • 洛阳便宜网站建设新手做电商卖什么好
  • 山西做杂粮的网站青海 网站开发 图灵
  • 网站建站网站建设做国外直播网站有哪些
  • 做印刷广告的图片在哪个网站找ii6创建网站
  • 网站上登录系统制作福州网站建设嘉艺
  • 手机软件下载网站开发小程序的平台
  • 网站建设制作策划方案怎么做虚拟网站
  • wordpress淘宝客建站个人域名可以备案企业网站吗
  • 自己做服装搭配的网站网站建设长尾关键词
  • 网站制作易捷网络wordpress网代码显示
  • 网站的发展趋势建网站建网站的公司
  • 新华网站建设网站后台登陆密码