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

网站制作实例教程开封seo推广

网站制作实例教程,开封seo推广,网站建设注意事项 南京,wordpress 修改文件名暂停线程意味着此线程还可以恢复运行。在Java多线程中,可以使用suspend()方法暂停线程,使用resume()方法恢复线程的执行。 suspend与resume方法的使用 示例代码如下: public class MyThread extends Thread{private long i 0;Overridepub…

  暂停线程意味着此线程还可以恢复运行。在Java多线程中,可以使用suspend()方法暂停线程,使用resume()方法恢复线程的执行。

suspend与resume方法的使用

示例代码如下:

public class MyThread extends Thread{private long i = 0;@Overridepublic void run() {while(true){i++;}}public long getI() {return i;}public void setI(long i) {this.i = i;}
}
public class Run {public static void main(String[] args) {try{MyThread t = new MyThread();t.start();Thread.sleep(5000);//A段t.suspend();System.out.println("A= " +System.currentTimeMillis()+" i="+t.getI());Thread.sleep(5000);System.out.println("A= " +System.currentTimeMillis()+" i="+t.getI());//B段t.resume();Thread.sleep(5000);//C段t.suspend();System.out.println("B= " +System.currentTimeMillis()+" i="+t.getI());Thread.sleep(5000);System.out.println("B= " +System.currentTimeMillis()+" i="+t.getI());}catch(Exception e){e.printStackTrace();}}
}

运行结果:
这里写图片描述
从控制台的打印的时间来看,线程的确被暂停了,而且还恢复成运行的状态。

suspend与resume方法的缺点-独占

  在使用suspend与resume方法时,如果使用不当,极易造成公共的同步对象独占,使其他线程无法访问公共同步对象。示例代码如下:

public class SynchronizedObject {synchronized public void printString(){System.out.println("begin");if(Thread.currentThread().getName().equals("a")){System.out.println("a线程永远 suspend!");Thread.currentThread().suspend();}System.out.println("end");}
}
public class Run {public static void main(String[] args) throws InterruptedException {SynchronizedObject s = new SynchronizedObject();Thread t1 = new Thread(){@Overridepublic void run() {s.printString();}};t1.setName("a");t1.start();Thread.sleep(1000);Thread t2 = new Thread(){@Overridepublic void run() {System.out.println("t2 启动了,但进入不printString()方法!");s.printString();}};t2.start();}
}

执行结果如下:
这里写图片描述
还有另外一种独占锁的情况,创建如下代码:

public class MyThread extends Thread{private long i = 0;@Overridepublic void run() {while(true){i++;}}
}
public class Run2 {public static void main(String[] args) throws InterruptedException {MyThread t = new MyThread();t.start();Thread.sleep(1000);t.suspend();System.out.println("main end");}
}

执行结果如下:
这里写图片描述
但是如果将代码改为如下:

public class MyThread extends Thread{private long i = 0;@Overridepublic void run() {while(true){i++;System.out.println("i="+i);}}
}

则输入结果如下:
这里写图片描述
控制台并不打印main end。出现这样情况的原因是,当程序运行到println()方法内部停止,同步锁未被释放。在上面也有讲过println()方法内部是同步的。这样就导致PrintStream对象的println()方法一直呈”暂停”状态,并且“锁未释放“,所有main线程的println迟迟不能打印。

suspend与resume方法的缺点-不同步

  在使用suspend与resume方法时也很容易出现因为线程的暂停而导致数据不同的情况。示例代码如下:

public class MyObject {private String username = "1";private String password = "11";public void setValue(String u,String p){this.username = u;if(Thread.currentThread().getName().equals("a")){System.out.println("停止a线程");Thread.currentThread().suspend();}this.password = p;}public void printUserNamePassword(){System.out.println(username+ " "+ password);}
}
public class Run {public static void main(String[] args) throws InterruptedException {MyObject m = new MyObject();Thread t1 = new Thread(){@Overridepublic void run() {m.setValue("a", "aa");}};t1.setName("a");t1.start();Thread.sleep(1000);Thread t2 = new Thread(){@Overridepublic void run() {m.printUserNamePassword();}};t2.start();}
}

运行结果如下:
这里写图片描述

http://www.dt0577.cn/news/22035.html

相关文章:

  • 建设网站网站企业网站推广排名
  • 虚拟机 网站建设客户关系管理系统
  • 网站建设海外推广 香港百度近日收录查询
  • 微信页面设计网站北京网站sem、seo
  • 网站模板登录模块营销推广公司
  • 专业做二手房装修网站软文营销的步骤
  • 苏州市住房和城乡建设局网站首页热搜词排行榜
  • 单位网站建设要多少钱新闻类软文营销案例
  • 如何给网站做右侧导航seo搜索引擎优化排名报价
  • 西安公司企业网站建设电子商务平台建设
  • 企业融资是做什么的合肥网站优化seo
  • 网站域名备案app线上推广是什么工作
  • 爱互融网站开发合同品牌策划方案范文
  • 建设类建设机械证官方网站营销推广策划及渠道
  • abc公司电子商务网站建设策划书学电脑办公软件培训班
  • 安防网站下载b2b是什么意思
  • 公司是否可以做多个网站淘宝客推广平台
  • 新翼设计网站建设公司seo网站优化做什么
  • 做动漫图片的网站网络营销的特点分别是
  • 惠阳有做公司网站的吗微信搜一搜seo优化
  • 正版win10做win7系统下载网站网站软件下载app
  • 怎么做网站广告位百度推广工具
  • 食品网站建设电商网站建设平台
  • 丹东做网站的哈尔滨最新信息
  • 网站如何横屏百度识图 上传图片
  • 丹东市供求信息网免费发布超级seo外链工具
  • wordpress地区分站世界羽联最新排名
  • 外贸开发模板网站模板网站安全检测在线
  • 淘宝做网站的公司微信管理软件哪个最好
  • 做任务得钱的网站外媒头条最新消息