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

中国风网站模板大型定制网站最贵建设多少钱

中国风网站模板,大型定制网站最贵建设多少钱,适合用于网站开发的工具,怎么自己做单页网站创建线程#xff1a;通过对java.lang包的查找#xff0c;继承Thread类可以创建线程1#xff0c;建立类继承Thread类2#xff0c;复写Thread中的ran方法。3#xff0c;调用线程的start()方法#xff0c;该方法的作用是#xff0c;启动线程#xff0c;调用ran方法。publi… 创建线程 通过对java.lang包的查找继承Thread类可以创建线程 1建立类继承Thread类 2复写Thread中的ran方法。 3调用线程的start()方法该方法的作用是启动线程调用ran方法。 public class Test { public static void main(String args[]) { Demo a new Demo(); a.start(); for(int x0;x100;x) System.out.println(hello word); } } class Demo extends Thread { public void ran() { for(int x0;x100;x) System.out.println(Demo ran); } } 两个输出会交替出现。 发现运行结果每次都不同 因为多个线程都在获取cpu的使用权cpu执行到谁谁就运行在某一时刻只能有一个程序在运行多核除外cpu在做着快速切换已达到看上去是在同时运行。 多线程特性随机性谁抢到谁执行至于执行多长时间cpu说的算。 为什么要覆盖ran方法 thread类用于描述线程。 该类定义了用于存储要运行的代码这些代码就存储在ran方法中。 ran 和 start 区别 只写ran线程没有被创建编程了单线程程序。会顺序执行输出不是随机的。   线程运行过程中的状态 线程对象的名称 每个线程都有默认名称。 Thread-编号   //该编号从0开始 线程名称可以提供 线程.getName()  方法获得 currentThread() :获取当前运行的线程对象 getName()获取线程名称 买票程序举例 public class Test { public static void main(String args []) { Ticket t1 new Ticket(); Ticket t2 new Ticket(); Ticket t3 new Ticket(); Ticket t4 new Ticket(); Ticket t5 new Ticket(); t1.start(); t2.start(); t3.start(); t4.start(); t5.start(); } } class Ticket extends Thread { private static int tick100; //静态所有对象公用一个票数。 public void run() { if(tick0) System.out.println(currentThread().getName()sale:tick--); } } 第二种创建进程的方法   实现runable接口 步骤 1定义类实现runnable接口 2覆盖runnable中的run方法 3通过Thread类建立线程对象 4将Runnable接口对象作为实际参数传递给Thread类的构造函数 5调用Thread类的start方法开启线程并调用Runnable子类中的run方法 实现方式和前一种方法的区别 实现方式好处在于避免了单继承的局限性。 在定义线程时建议使用实现方式。 继承Thread类线程代码存放在Thread子类对象run方法中 实现Runnable线程代码存放在接口的子类对象的run中 在此例中ticket也不用static了因为只建立了一个对象 睡眠 try {Thread.sleep(10);} catch(Exception e) { } public class Test { public static void main(String args []) { Ticket t new Ticket(); Thread t1 new Thread(t); Thread t2 new Thread(t); Thread t3 new Thread(t); Thread t4 new Thread(t); t1.start(); t2.start(); t3.start(); t4.start(); } } class Ticket implements Runnable { private int tick 100; public void run() { while(true) if(tick0) { System.out.println(saletick--); } } } 安全问题 以下代码会打印  0-1-2号票 产生问题原因 当多条语句在操作同一个线程共享数据时一个线程对多条语句只执行了一部分另一个线程1参与进来执行导致共享数据出现错误。  解决办法对多条操作共享数据的语句只能让让一个线程都执行完在执行过程中其他线程不可以参与执行。  java对于多线程的安全问题提供了专业的解决方式就是同步代码块。会保证该代码块内的代码被全部执行再切换线程。 格式 synchronized对象 { 需要被同步的代码 } public class Test { public static void main(String args []) { Ticket t new Ticket(); Thread t1 new Thread(t); Thread t2 new Thread(t); Thread t3 new Thread(t); Thread t4 new Thread(t); t1.start(); t2.start(); t3.start(); t4.start(); } } class Ticket implements Runnable { private int tick 100; public void run() { while(true) if(tick0) { try {Thread.sleep(10);} catch(Exception e) { } System.out.println(saletick--); } } } 修改安全问题后的代码 public class Test { public static void main(String args []) { Ticket t new Ticket(); Thread t1 new Thread(t); Thread t2 new Thread(t); Thread t3 new Thread(t); Thread t4 new Thread(t); t1.start(); t2.start(); t3.start(); t4.start(); } } class Ticket implements Runnable { Object obj new Object(); private int tick 100; public void run() { while(true) { synchronized(obj) { if(tick0) { try {Thread.sleep(10);} catch(Exception e) { } System.out.println(saletick--); } } } } } 如何找到安全问题/同步的前提 1明确哪些代码是多线程运行的代码。 2明确共享数据。 3明确多线程代码中哪些语句是操作共享数据的。 同步函数 同步有两种1代码块2同步函数 用synchronized修饰函数即可。 同步代码块使用的锁时obj 同步函数的锁 同步函数使用的所时this  也就是调用该函数的实体。 如果同步函数被静态修饰后使用的锁是该类对应的class就是类名点class 。   Ticket.class 懒汉式 死锁   两个锁 同步中嵌套同步锁却不同恰好停止在某位置会造成死锁。 要避免死锁。 public class Test { public static void main(String args []) { Thread t1 new Thread(new Deadlock(true)); Thread t2 new Thread(new Deadlock(false)); t1.start(); t2.start(); } } class Deadlock implements Runnable { private boolean flag; Deadlock(boolean flag) { this.flag flag; } public void run() { if(flag) { while(true) { synchronized(Mylock.locka) { System.out.println(if lock a); synchronized(Mylock.lockb) { System.out.println(if lockb); } } } } else { while(true) { synchronized(Mylock.lockb) { System.out.println(else lockb); synchronized(Mylock.locka) { System.out.println(else locka); } } } } } } class Mylock { static Object locka new Object(); static Object lockb new Object(); }  转载于:https://www.cnblogs.com/hitxx/p/4675974.html
http://www.zqtcl.cn/news/681021/

相关文章:

  • 建网站跟建网店的区别怎样营销建设网站
  • 医院做网站的风格乐清网站建设哪家好
  • 手机商城网站方案如何自己搭建微信小程序
  • 做影视免费网站违法吗青岛快速排名优化
  • 网站建设在电子商务中的作用的看法360地图怎么添加商户
  • 网站域名备案与不备案的区别wordpress 注册审核
  • 大学生做企业网站网页设计免费模板情侣
  • 商城网站建设教程网站开发支付宝
  • 广安网站设计快递加盟代理
  • 建设网站的建筑公司宿迁华夏建设集团网站
  • 百度推广网站建设费利用阿里云虚拟主机做网站
  • 吐槽做网站论坛模板
  • 广水住房和城乡建设部网站简单网页制作代码html
  • 建设网站找什么仿门户网站
  • 贵阳手机网站建设公司沈阳图书设计公司
  • 哪里做网站比较好在哪里注册域名
  • 做搜狗pc网站软件下载广告设计与制作学什么
  • 软件工程 旅游网站开发er图昆山网站建设网站建设
  • 网站下载的网页修改下面版权所有企业建设营销型网站的目的有
  • 官方重大项目建设库网站手机ps软件如何做ppt下载网站
  • 全国加盟网站大全海尔网站建设目标
  • wordpress 企业站模版自己做视频网站可以吗
  • 建设电子商务网站的方法有广东网站开发收费
  • php网站页面转wordpress网站广告代码
  • 在线网站建设教程网站版面布局结构
  • 网站建设提议网站建设怎么在图片上加字
  • 网站模板但没有后台如何做网站家政网站开发
  • 自己办网站审批流程网页设计师的发展路径
  • 什么叫网站地图百度竞价排名费用
  • 企业网站建设顾问wordpress如何用API采集