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

网站建设前期东莞建筑设计公司排名

网站建设前期,东莞建筑设计公司排名,网站情况建设说明书,做网站 附加信息进程与线程进程进程是进程实体的运行过程#xff0c;是系统进行资源分配和调度的一个独立单位#xff0c;比如我们windows电脑上运行的一个程序就是一个进程。在传统进程中进程是资源分配和调度的一个基本单位#xff0c;在后来引入线程概念后#xff0c;进程就变成了资源分…进程与线程进程进程是进程实体的运行过程是系统进行资源分配和调度的一个独立单位比如我们windows电脑上运行的一个程序就是一个进程。在传统进程中进程是资源分配和调度的一个基本单位在后来引入线程概念后进程就变成了资源分配的基本单位但不是调度的基本单位。为什么要有线程在说线程前总结下进程的特点进程是一个可拥有资源的独立单位进程是一个可独立调度和分派的基本单位。这样来看的话好像是没什么问题但是在多任务环境中不可能说让所有任务排队前面的处理完了才处理后面的任务。如果要让用户感觉到任务都是一起执行的那么就必须在进程之间频繁切换。问题在于如果要进行进程的切换需要做很多的工作必须要保存好当前CPU的上下文好让CPU下次被分配到当前进程时可以继续往前执行然后还需要设置新的进程的CPU上下文在这个过程中会花费很多时间。由于这个原因就限制了系统中进程数目不能多。为了解决这个限制后来提出将进程的两个属性分开由操作系统分开处理即对于作为调度和分派的基本单位但不同时作为拥有资源的单位而对于拥有资源的基本单位又不对其进行频繁的切换。正是在这种思想的指导下形成了线程的概念。线程在多线程操作系统中中通常是在一个进程中包括多个线程每个线程都是独立调度和分派的基本单位。资源由进程来拥有线程不拥有资源。同一个进程之间的线程切换不会导致进程的切换只有不同进程间的线程切换才会导致进程切换。而且线程的切换则仅需保存和设置少量寄存器内容不会同进程切换需求创建和销毁进程控制块等所以非常迅速所以其十分适合高并发环境。线程的状态(Java)public enum State {NEW,//新建 线程被创建但是没有调用start方法RUNNABLE,//可运行 表示当前线程可以运行但实际是否运行有cpu决定BLOCKED,//阻塞 其他线程获得锁当前线程被阻塞在获得锁处WAITING,//等待 等待其他条件成熟进入可运行状态TIMED_WAITING,//计时等待 在一个指定时间内等待超时后放弃TERMINATED;//终止 线程执行完毕}线程的创建方式Thread继承Thread类class TestThread extends Thread{Overridepublic void run() {super.run();//do working}}Runnable实现Runnable接口static class TestRunnale implements Runnable{Overridepublic void run() {//do working}}public static void main(String[] args) {TestRunnale runnale new TestRunnale();Thread thread new Thread(runnale);thread.start();}线程的中断不安全的中断在Thread的api中提供了一些终止线程的方法比如stop()suspend(),resume(),但是这些方法目前在JDK中已经被标记位过时因为这些方法具有死锁倾向已经被明确表示不支持使用。中断线程APIinterrupt() 中断线程本质是将线程的中断标志位设为true其他线程向需要中断的线程打个招呼。是否真正进行中断由线程自己决定。isInterrupted() 线程检查自己的中断标志位静态方法Thread.interrupted() 将中断标志位复位为false中断标志位自定义一个Boolean类型的中断标志位提供一个中断方法线程一直循环检测该标志位标志位被设置为退出状态是终止线程。public class FlagCancel {static class Flag extends Thread{//中断标志public static boolean flag false;Overridepublic void run() {int i 0;while(!flag){System.out.println(i);if(i3){try {Thread.sleep(200);//interrupt();if(i 10)cancel();//修改中断状态退出线程System.out.println(thread: isInterrupted());} catch (InterruptedException e) {e.printStackTrace();}System.out.println(cancel...);}}}public static void cancel(){flag true;}}public static void main(String[] args) {Flag test new Flag();test.start();test.setPriority(10);//这里的设置优先级其实没什么用。cpu不会理你的。。。try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(main: test.isInterrupted());//这里属于主线程(main)}}正常来说上面的形式没有什么问题我们写代码的时候提供一个修改中断为状态的方法并根据我们自己的业务逻辑来定义什么时候中断但是如果我们手动设置中断就有问题了将上面代码中注释的interrupt();打开。interrupt()方法是用来中断线程的但是在上面的逻辑中即使调用了该方法也不会立即中断而必须要等待中断为被修改后才能退出。安全的中断上面介绍了中断相关的api和使用中断标志位来中断线程但是中断标记位无法捕获异常情况。但是isInterrupted()方法会一直检查线程的中断状态所以我们可以用这个方法来实现安全的中断。public class SafeInterrupt extends Thread {private boolean flag false;Overridepublic void run() {int i 0;System.out.println(Thread.currentThread().getName() : Thread.currentThread().isInterrupted());while (!flag !Thread.currentThread().isInterrupted()) {System.out.println(i);try {synchronized (this) {if (i 3) {//Thread.sleep(1000 * 60 * 60 * 24);wait();}}} catch (InterruptedException e) {e.printStackTrace();}}}/*** 这里必须将需要中断的线程作为参数传过来* 用以进行中断* param t(Thread)*/public void cancel(Thread t) {System.out.println(ready stop currentThread...);flag true;//将需要中断的线程的中断标志位设置为truet.interrupt();System.out.println(t.getName() : t.isInterrupted());}public static void main(String[] args) throws InterruptedException {SafeInterrupt safeInterrupt new SafeInterrupt();safeInterrupt.start();Thread.sleep(100);safeInterrupt.cancel(safeInterrupt);}}不可中断的情况好了到现在我们已经可以安全的处理线程的中断了但是还没完因为不是所有的线程都是会响应中断的。比如IO的read()/write() 等就不会响应中断。而如果我们想不让其继续阻塞的话就需要我们手动的关闭底层的套接字。public class CloseSocket extends Thread {private Socket socket;private InputStream in;public CloseSocket(Socket socket, InputStream in) {this.socket socket;this.in in;}//重写中断方法 在中断线程时中断套接字Overridepublic void interrupt() {try {//关闭底层套接字socket.close();} catch (IOException e) {e.printStackTrace();}finally {//中断线程super.interrupt();}}}还有想死锁之类的不响应中断的情况用代码已经基本解决不了了只能检查代码修改重启服务器啦。
http://www.yutouwan.com/news/106973/

相关文章:

  • 母婴网站建设wordpress 更改首页
  • 大名做网站网站常用配色
  • 网站备案照片背景免费做快闪网站
  • 酒店网站建设研究哪家网站建设做的好
  • 营销管理网站定制wordpress
  • 网站怎么做搜索引擎优化_凡客下载
  • 京东网站建设的特点三亚做网站
  • php网站源码删除小说网站充值接口怎么做的
  • 网站设计小图标大作业做网站
  • 建设银行签名通在网站哪里下载百度app小程序
  • 网站建设费往什么科目常见购物网站功能
  • 网站seo优化推广怎么做wordpress 随机读取一篇文章
  • 厦门建网站的公司wordpress 三栏怎么弄
  • 网站logo是什么意思合肥网站建设网站制作
  • 厦门外贸建站更改网站模板内容
  • 中山哪里有好网站建设公司如何做网站搜索栏
  • 网上商城网站源码建设单位发包许可证网站
  • 地产网站互动设计网站备案个人信息泄露
  • 网站正在建设中的网页怎么做垦利网站建设
  • 湘潭做网站 去磐石网络企企业业网网站站建建设设
  • 图片素材网站哪个最好海外服务器加速
  • iis怎么加载网站注册劳务公司注册条件及费用
  • 做网站三河网站建设总体上可划分为两个阶段
  • 浙江建设网查询seo短视频网页入口引流推广
  • 企业设计网站建设在线优化工具
  • 如何登录建设部网站电脑版年前做网站的好处
  • 网站开发用什么电脑好怎么注册一个网站做色流
  • 兰州手机网站郴州网站
  • 做网站改版多少钱企业融资数据在哪查
  • 搞笑资讯网站源码深圳 购物网站