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

湘潭企业网站建设 p磐石网络移动页面

湘潭企业网站建设 p磐石网络,移动页面,做网站的那家公司好,青年文明号网站建设文章目录synchronized 锁有两种synchronized异常捕获主线程和子线程volatile的作用notify是随机启动等待线程中的一个synchronized 锁有两种 类对象类的实例 第一种#xff1a;锁类对象#xff0c;有两种方式#xff0c;如下#xff1a; // 方法一#xff1a;synchroni… 文章目录synchronized 锁有两种synchronized异常捕获主线程和子线程volatile的作用notify是随机启动等待线程中的一个synchronized 锁有两种 类对象类的实例 第一种锁类对象有两种方式如下 // 方法一synchronized 修饰static方法 public static synchronized void test(){System.out.println(Thread.currentThread().getName() start );try {TimeUnit.SECONDS.sleep(2);} catch (Exception e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName() end ); } // 方法二synchronized锁class对象 public void test2(){synchronized (getClass()) {try {TimeUnit.SECONDS.sleep(2);} catch (Exception e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName() run );} }public static void main(String[] args) {TestThread10 t new TestThread10();new Thread(()-TestThread10.test(),线程 1 ).start();new Thread(()-t.test2(),线程 2 ).start(); }其结果如下 在线程1也就是先启动线程1且等线程1走完才执行线程2 锁类就可以理解为在类对象上加了一把锁所有加锁的方法都需要等待上一把锁的释放才能执行 第二种类的实例 只要对同一个实例对象加锁了才能实现线程同步如下 public void test2(){synchronized (this) {try {TimeUnit.SECONDS.sleep(2);} catch (Exception e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName() run );} }synchronized异常捕获 使用synchronized的时候出现异常一定要处理不然他会自动释放锁 它的机制是手动加锁自动释放锁。下面看一个例子在异常的地方一定要处理异常不然就会想下面代码中的线程1会被释放掉。 private Integer c 0;Override public void run() {count(); }private synchronized void count(){System.out.println(Thread.currentThread().getName() start。。。);while (true) {System.out.println(Thread.currentThread().getName() countc);try {TimeUnit.SECONDS.sleep(1);} catch (InterruptedException e) {e.printStackTrace();}if (c 5) {int i 1/0;}}}public static void main(String[] args) {TestThread3 t new TestThread3();Thread t1 new Thread(t, 线程 1);Thread t2 new Thread(t, 线程 2);t1.start();t2.start(); } 主线程和子线程 线程分用户线程和守护线程 main方法其实是一个主线程在操作系统启动java.exe后是开启了一个进程然后进程启动main线程main线程有启动其他线程。 守护线程和主线程一起结束主线程结束守护线程也结束用户线程非守护线程但所有的用户线程结束主线程结束 t2.setDaemon(true); t2.start();volatile的作用 可以看这位博主的博客Java中Volatile关键字详解 - 郑斌blog - 博客园 (cnblogs.com) 它有两个功能 线程间的可见性防止指令重排序 注意 可见性不代表原子性它只是能够让其他线程能够实时查看到最新值而其他操作它不保证。 指令重排序这个有点深奥可以先暂时忽略 notify是随机启动等待线程中的一个 notify是随机启动等待线程中的一个并且跟线程优先级无关且 wait和notify方法要在同一把lock的情况下使用还有一点是lock.wait 阻塞还后会把锁让出给需要的线程然而在其他线程执行完后调用lock.notify()唤醒等待的线程但是在当前锁里的代码没执行完不会释放掉锁。 简单场景模拟 一个固定容量同步容器拥有put和get方法以及getCount方法能够支持两个生产者线程以及10个消费者线程的阻塞调用。 public class TestThread8 { private final LinkedList list new LinkedList();private final int MAX 10;private int count 0;public synchronized void put(Object o) {while (list.size() MAX) {try {// 在这里等待的那个调用notify时会从这里继续执行this.wait();} catch (InterruptedException e) {e.printStackTrace();}}list.add(o);count;// 启动所有线程包括生产者随机的this.notifyAll(); }public synchronized void get() {while (list.size() 0) {try {this.wait();} catch (InterruptedException e) {e.printStackTrace();}}list.removeLast();count--;this.notifyAll(); }public int getCount() {return list.size(); }public static void main(String[] args) {TestThread8 t new TestThread8();for (int i 0; i 2; i) {new Thread(() - {int j 0;while (true) {t.put(Thread.currentThread().getName() put t.getCount());System.out.println(Thread.currentThread().getName() put t.getCount());}}).start();}for (int i 0; i 10; i) {new Thread(() - {while (true) {t.get();System.out.println(Thread.currentThread().getName() get t.getCount());}}).start();} } }
http://www.hkea.cn/news/14260589/

相关文章:

  • 做网站文案用哪个软件番禺大石做网站
  • 网站界面设计需要首先做市场研究对吗广安网站seo
  • 图书馆门户网站建设网站怎么做域名实名认证吗
  • 电商网站为什么要提高网站友好度网站建设具备什么条件
  • 机关 网站 建设方案仿做唯品会网站
  • 登录深圳住房和建设局网站如何制作假网页
  • 做网站前段用什么软件品牌营销和品牌推广
  • 响应式网站文章淘宝网网站设计分析
  • 网站建设盐城最便宜福永网站建设公司有没有
  • 网站主页和子页风格如何统一WordPress国外打赏
  • 视频在线观看网站怎么建设微信小程序cms系统
  • 跨境电子商务网站建设wordpress前面增加new
  • 大朗网站建设重庆专业网站推广方案
  • 网站前台建设电商网站变化
  • 绿色食品网站模板电子商务网站建设也管理
  • 企业营业执照查询系统入口seo网站营销公司哪家好
  • 哪个网站做长图免费转高清图片网站关键词排名系统
  • 如何做喊单网站中山发布最新通知
  • 中国工商注册网官网入口优化seo网站
  • 网站开发工具的功能有哪些山东网站建设平台
  • 网站建设流程域名注册好如何网站建设
  • 示范高职院校建设专题网站海外网络加速器
  • 郑州个人网站建设公司排行榜苏州网站搜索优化
  • 网站建设朋友圈广告语西安小程序外包
  • 网站的功能建设方案网站建设开发流程按钮
  • 用vue做的网站怎么实现响应式wordpress安装到ESC
  • 传媒网站设计公司备用网站怎么做
  • 电子商务网站开发策划案wordpress导入html文件
  • 肥东建设网站wordpress伪静态cdn
  • 网站支付接口如何做任务网站开发