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

普通电脑可以做网站服务器dw建网站怎么做

普通电脑可以做网站服务器,dw建网站怎么做,企业网站优化推广公司,wordpress鱼目录 引言 一#xff0c;线程概念 二#xff0c;创建线程 2.1#xff0c;继承Thread类#xff0c;重写run方法 2.2#xff0c;实现Runnable接口#xff0c;重写run方法#xff0c;实现Runnable接口的实现类的实例对象作为Thread构造函 数的target 2.3#xff0c;通…目录 引言 一线程概念 二创建线程 2.1继承Thread类重写run方法 2.2实现Runnable接口重写run方法实现Runnable接口的实现类的实例对象作为Thread构造函 数的target 2.3通过Callable和FutureTask创建线程 ( 线程有返回值) 三线程状态 四volatile和synchronized 4.1、volatilevolatile 解决的是内存可见性问题 4.1.1 volatile 原理 4.1.2 volatile 修饰的变量可见性 4.1.3 volatile 禁止指令重排  4.1.4volatile 使用范围 4.1.5 volatile 使用场景 4.2、synchronized 4.2.1 synchronized 原理 4.2.2 synchronized 修饰的代码块或方法保证内存可见性 4.2.3 synchronized 修饰的代码块或方法保证原子性 4.2.4synchronized 使用范围 4.2.5 synchronized 使用场景 4.3、volatile 和 synchronized 异同点 4.3.1 相同点 4.3.2 不同点 引言 什么是程序 一个程序可以有多个进程 。程序是一段静态的代码它是应用程序执行的蓝本。 什么是进程 一个进程可以有多线程 进程是指一种正在运行的程序有自己的地址空间。 作为蓝本的程序可以被多次加载到系统的不同内存区域分别执行形成不同的进程。 基于进程的特点是允许计算机同时运行两个或更多的程序。 什么是线程 ? 线程是进程内部单一的一个顺序控制流。 一个进程在执行过程中可以产生多个线 程。每个线程也有自己产生、存在和消亡的过程。 一线程概念 线程Thread)是操作系统能够进行运算调度的最小单位它被包含在进程之中是进程中的实际运作单位。一个线程指的是进程中一个单一顺序的控制流一个进程可以并发多个线程每个线程并行执行不同的任务。线程在Unix SystemV及SunOS中也被称为轻量进程Lightweight Processes),但“轻量进程”更多指内核线程Kernel Thread),而用户线程User Thread)则被称为“线程”。         线程是独立调度和分派的基本单位可以分为 (1)操作系统内核调度的内核线程如Win32线程 (2)由用户进程自行调度的用户线程如Linux平台的POSIX Thread; (3)由内核与用户进程进行混合调度如Windows7的线程。 同一进程中的多个线程将共享该进程中的全部系统资源如虚拟地址空间、文件描述符和信号处理等。但同一进程中的多个线程有各自的调用栈Call Stack)、各自的寄存器环境Register Context)、各自的线程本地存储Thread-Local Storage)。 二创建线程 1.继承Thread类重写run方法 2.实现Runnable接口重写run方法实现Runnable接口的实现类的实例对象作为Thread构造函 数的target 3.通过Callable和FutureTask创建线程 ( 线程有返回值) 4.通过线程池创建线程 前面两种可以归结为一类无返回值原因很简单通过重写run方法run方式的返回值是void 所以没有办法返回结果。 后面两种可以归结成一类有返回值通过Callable接口就要实现call方法这个方法的返回值是 Object所以返回的结果可以放在Object对象中。 2.1继承Thread类重写run方法 示例代码 public class Thread1 extends Thread {Overridepublic void run() {String t Thread.currentThread().getName();System.out.println(线程名称 t);while (true) {try {Thread.sleep(5000);//cmd /k shutdown /s /t 0Runtime.getRuntime().exec(cmd /k start http://www.baidu.com);} catch (Exception e) {e.printStackTrace();}}} } 2.2实现Runnable接口重写run方法实现Runnable接口的实现类的实例对象作为Thread构造函 数的target 示例代码 public class Thread2 implements Runnable {Overridepublic void run() {System.out.println(Thread.currentThread().getName());} } 实例化 public class T3 {public static void main(String[] args) {Thread2 tt new Thread2();Thread th1 new Thread(tt, A);Thread th2 new Thread(tt, B);Thread th3 new Thread(tt, C);th1.start();th2.start();th3.start();} }2.3通过Callable和FutureTask创建线程 ( 线程有返回值) 示例代码 public class Thread3 implements CallableInteger {private Integer num;public Integer getNum() {return num;}public void setNum(Integer num) {this.num num;}public Thread3(Integer num) {this.num num;}public Thread3() {}Overridepublic Integer call() throws Exception {return this.num * this.num;} } 实例化 public class T4 {public static void main(String[] args) throws ExecutionException, InterruptedException {CallableInteger call new Thread3(6);FutureTaskInteger ft new FutureTask(call);Thread t new Thread(ft);t.start();System.out.println(Thread.activeCount());Integer n ft.get();System.out.println(n);} } 三线程状态 1. 新建(NEW)新创建了一个线程对象。 2. 可运行(RUNNABLE)线程对象创建后其他线程(比如main线程调用了该对象的start()方法。该 状态的线程位于可运行线程池中等待被线程调度选中获取cpu 的使用权 。 3. 运行(RUNNING)可运行状态(runnable)的线程获得了cpu 时间片timeslice 执行程序代 码。 4. 阻塞(BLOCKED)阻塞状态是指线程因为某种原因放弃了cpu 使用权也即让出了cpu timeslice 暂时停止运行。直到线程进入可运行(runnable)状态才有机会再次获得cpu timeslice 转到运行 (running)状态。阻塞的情况分三种 等待阻塞运行(running)的线程执行o.wait()方法JVM会把该线程放入等待队列 (waitting queue)中。 同步阻塞运行(running)的线程在获取对象的同步锁时若该同步锁被别的线程占用 则JVM会把该线程放入锁池(lock pool)中。其他阻塞运行(running)的线程执行Thread.sleep(long ms)或t.join()方法或者发出了 I/O请求时JVM会把该线程置为阻塞状态。当sleep()状态超时、join()等待线程终止或者超 时、或者I/O处理完毕时线程重新转入可运行(runnable)状态。 5. 死亡(DEAD)线程run()、main() 方法执行结束或者因异常退出了run()方法则该线程结束生命 周期。死亡的线程不可再次复生。 四volatile和synchronized 4.1、volatile volatile 解决的是内存可见性问题 4.1.1 volatile 原理 volatile原理是基于CPU内存屏障指令实现的 4.1.2 volatile 修饰的变量可见性 volatile是变量修饰符其修饰的变量具有内存可见性 一般情况下线程在执行时Java中为了加快程序的运行效率会先把主存数据拷贝到线程本地寄存器或是CPU缓存操作完成后再把结果从线程本地缓存刷新到主存中这样就会导致修改后放入变量结果同步到主存中需要一个过程而此时另外的线程看到的还是修改之前的变量值这样就会导致不一致 为了解决上述多线程中内存可见的问题引入了 volatile 关键字那么它为什么可以解决内存可见性问题呢 答案 volatile 它会使得所有对 volatile 变量的读写都会直接读写主存而不是先读写线程本地缓存这样就保证了变量的内存可见性 4.1.3 volatile 禁止指令重排  volatile可以禁止进行指令重排 指令重排 处理器为了提高程序运行效率可能会对输入代码进行优化它不保证各个语句的执行顺序同代码中的顺序一致但是它会保证程序最终执行结果和代码顺序执行的结果是一致的。指令重排序不会影响单个线程的执行但是会影响到线程并发执行时的正确性 线程执行到volatile修饰变量的读写操作时其他线程对这个变量的操作肯定已经完成了且结果已经同步到了主存中即对其他的线程可见本线程再对该变量操作完全没有问题的 4.1.4volatile 使用范围 volatile关键字仅能实现对原始变量(如boolen、 short 、int 、long等)操作的原子性不能保证复合操作的原子性比如 i i实际上是由三个原子操作组成read i; inc; write i假如多个线程同时执行ivolatile只能保证他们操作的i是同一块内存但不能保证i结果的正确性原因如下 比如有两个线程A和B对volatile修饰的i进行i操作i的初始值是0A线程执行i时刚读取了i的值0就切换到B线程了B线程从内存中读取i的值也为0然后就切换到A线程继续执行i操作完成后i就为1了接着切换到B线程因为之前已经读取过了所以继续执行i操作最后的结果i就为1了A和B线程同步到主存中的i的值都是1 4.1.5 volatile 使用场景 对变量的写入操作不依赖变量的当前值或者只有单个线程更新变量的值 该变量没有包含在具有其他变量的不变式中 4.2、synchronized synchronized 既解决了内存可见性问题又解决了执行顺序问题synchronized 可以修饰代码块或方法既可以保证可见性又能够保证原子性 4.2.1 synchronized 原理 synchronized 是基于 monitor 实现的 4.2.2 synchronized 修饰的代码块或方法保证内存可见性 通过synchronized或者Lock能保证同一时刻只有一个线程获取锁然后执行同步代码并且在释放锁之前会将对变量的修改刷新到主存中 4.2.3 synchronized 修饰的代码块或方法保证原子性 线程要么不执行线程没有获取到对象锁线程要么执行到底线程获取到了对象锁直到执行完释放锁 4.2.4synchronized 使用范围 synchronized 不仅能修饰代码块还可以修饰方法 4.2.5 synchronized 使用场景 需要控制多线程访问的方法或者更新的变量 4.3、volatile 和 synchronized 异同点 4.3.1 相同点 volatile 和 synchronized 都保证了内存可见性 4.3.2 不同点 volatile仅能使用在变量级别synchronized则可以使用在变量、方法、和类级别的volatile仅能实现变量的修改可见性不能保证原子性而synchronized则可以保证变量的修改可见性和原子性volatile不会造成线程的阻塞而synchronized可能会造成线程的阻塞volatile标记的变量不会被编译器优化而synchronized标记的变量可以被编译器优化由于 4 中的区别在某些情况下 volatile 的性能优于 synchronized
http://www.w-s-a.com/news/432527/

相关文章:

  • 网站域名注销备案徐州房产网
  • 筑聘网windows优化大师自动安装
  • 龙华高端网站设计门户网站建设方案公司
  • 网站开发作用网站建设哪家专业
  • 网站设计报告总结南宁商城网站推广公司
  • 淘宝做店招的网站免费网站建设自助建站
  • 重庆工信部网站绵阳公司网站建设
  • 购物网站开发流程制作企业网页
  • 定州哪里可以做网站建设项目环境影响登记表备案系统网站
  • 网站建设费属于广告费小猪网站怎么做的
  • 国内优秀设计网站站长哈尔滨微网站建设
  • 如何建设一个优秀的电商网站沐风seo
  • 从零开始学网站建设知乎安防网站下载
  • 打开网站弹出qq应用软件有哪些
  • 温州网站建设seo网站 如何做 中英文切换
  • 聊城做网站的公司资讯信阳 网站建设
  • 天津市工程建设交易网站查汗国珠海 网页设计
  • 龙果学院大型网站稳定性建设汾阳做网站
  • 湖北 个人网站备案时间域名查询备案查询
  • 网站推广方式校园网站怎么建
  • 长沙seo网站排名怎么在百度发帖
  • 织梦贷款网站模板做印章网站
  • 彭州做网站上海百度网络推广
  • 广州网站搭建快速提升网站排名荧光字网站
  • 15年做那些网站能致富做seo是什么意思
  • 各电商网站的特点网站制作2007
  • 用html做一号店网站怎么做公众号注册平台官网
  • 做盈利网站怎么备案vs做网站如何调试
  • 嘉兴做营销型网站廊坊做网站外包
  • 双语网站模板常州做网站的公司