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

枣庄市建设项目环评备案网站设计网站公司好评y湖南岚鸿ok

枣庄市建设项目环评备案网站,设计网站公司好评y湖南岚鸿ok,服务器怎么建网站,内蒙古住房和城乡建设厅官方网站目录 1.线程状态 示例#xff1a; 1.1线程状态和状态转移的意义 2.线程安全 2.1观察线程不安全 2.2线程不安全的原因 3.synchronized 关键字 - 监视器锁 monitor lock 3.1synchronized 的特性 1. 互斥 2.可重⼊ 应用示例#xff1a; 3.2synchronized 使⽤⽰例 1.…目录 1.线程状态 示例 1.1线程状态和状态转移的意义 2.线程安全 2.1观察线程不安全 2.2线程不安全的原因 3.synchronized 关键字 - 监视器锁 monitor lock 3.1synchronized 的特性 1. 互斥 2.可重⼊ 应用示例 3.2synchronized 使⽤⽰例   1. 修饰代码块: 明确指定锁哪个对象. 2.直接修饰普通⽅法: 锁的 SynchronizedDemo 对象 3.修饰静态⽅法: 锁的 SynchronizedDemo 类的对象 1.线程状态 在Java中线程有几种不同的状态可以通过Thread类的getState()方法获取线程的当前状态。 线程的状态是⼀个枚举类型 Thread.State public class ThreadState {public static void main(String[] args) {for (Thread.State state : Thread.State.values()) {System.out.println(state);}} }NEW新建新创建的线程尚未启动。RUNNABLE可运行正在Java虚拟机中执行的线程可能正在执行也可能正在等待CPU时间片。BLOCKED阻塞被阻塞并等待监视器锁定的线程。当线程试图进入一个同步代码块而该块已经被其他线程持有时该线程将进入阻塞状态。WAITING等待无限期等待另一个线程执行特定操作的线程。线程可以通过调用Object类的wait()方法、Thread类的join()方法或LockSupport类的park()方法进入等待状态。TIMED_WAITING计时等待在等待一段时间后自动恢复运行的线程。线程可以通过调用Thread类的sleep()方法、Object类的wait方法、Thread类的join方法进入计时等待状态。TERMINATED终止已经执行完毕的线程不再运行。 示例 我们用getState()来获取线程的状态。 package 多线程;public class ThreadDemo13 {public static void main(String[] args) throws InterruptedException {Thread t new Thread(()-{for (int i 0; i 5; i) {System.out.println(线程运行中);try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}});//启动之前状态是new状态System.out.println(t.getState());t.start();System.out.println(t.getState());t.join();System.out.println(t.getState());System.out.println(t线程结束);} }我们查看结果一开始线程的状态是NEW当我们t.start后线程的状态变成了RUNNABLE之后线程开始运行。我们使用t.join(提前结束线程。线程状态改变成了TERMINTED。 1.1线程状态和状态转移的意义 2.线程安全 线程安全是指在多线程环境下多个线程同时访问共享资源时不会出现数据不一致、竞态条件和死锁等问题。在并发编程中如果多个线程同时访问共享的可变数据可能会导致数据不一致的情况。例如一个线程在读取一个共享变量的同时另一个线程正在修改该变量这就可能导致读取到的数据是脏数据脏数据是指在并发环境下一个线程正在修改某个共享变量的同时另一个线程正在读取同一个变量的值从而导致读取到的值不正确或者不符合预期。这种情况也被称为“读写冲突”。或者不符合预期的结果。为了保证线程安全需要采取相应的措施来避免这类问题。 2.1观察线程不安全 我们写一个程序来观察 // 此处定义⼀个 int 类型的变量 private static int count 0; public static void main(String[] args) throws InterruptedException {Thread t1 new Thread(() - { // 对 count 变量进⾏⾃增 5w 次for (int i 0; i 50000; i) {count;}});Thread t2 new Thread(() - {// 对 count 变量进⾏⾃增 5w 次for (int i 0; i 50000; i) {count;}});t1.start();t2.start();// 如果没有这俩 join, 肯定不⾏的. 线程还没⾃增完, 就开始打印了. 很可能打印出来的 cout1.join();t2.join();// 预期结果应该是 10wSystem.out.println(count: count); } 我们运行结果会发现每次运行的结果都是不一样的这就是因为线程不安全所以我们的结果不正确。上⾯的线程不安全的代码中, 涉及到多个线程针对 count 变量进⾏修改. 此时这个 count 是⼀个多个线程都能访问到的 共享数据 2.2线程不安全的原因 1.根本原因操作系统上的线程是“抢占式执行”“随机调度”线程之间执行的顺序带来了很多变数 2.代码结构代码中多个线程同时修改同一个变量。 一个线程修改一个变量没事 多个线程读取同一个变量没事 多个线程修改不同变量没事 3.直接原因上述多线程修改操作本身不是“原子的”原子性是指一个操作是不可中断的在执行过程中不能被其他线程或事件打断要么全部执行成功要么全部不执行。如果一个操作具有原子性那么多个线程同时执行这个操作时不会出现数据不一致的问题。 3.synchronized 关键字 - 监视器锁 monitor lock synchronized是Java中用于实现同步的关键字可以将代码块或方法声明为同步代码块或同步方法。在多线程环境下使用synchronized可以确保同一时间只有一个线程能够访问共享资源从而避免数据不一致的问题。 3.1synchronized 的特性 1. 互斥 synchronized 会起到互斥效果, 某个线程执⾏到某个对象的 synchronized 中时, 其他线程如果也执⾏到同⼀个对象 synchronized 就会阻塞等待. • 进⼊ synchronized 修饰的代码块, 相当于 加锁 • 退出 synchronized 修饰的代码块, 相当于 解锁 2.可重⼊ synchronized 同步块对同⼀条线程来说是可重⼊的不会出现⾃⼰把⾃⼰锁死的问题 应用示例 我们对count进行加锁 package 多线程;public class ThreadDemo14 {private static int count 0;public static void main(String[] args) throws InterruptedException {//创建一个对象Object locker new Object();Thread t1 new Thread(()-{for (int i 0; i 5000; i) {synchronized (locker) {//进程如{}就会加锁count;}//出了{}就会解锁}});Thread t2 new Thread(()-{for (int i 0; i 5000; i) {synchronized (locker) {count;}}});t1.start();t2.start();// 如果没有这俩 join, 肯定不⾏的. 线程还没⾃增完, 就开始打印了. t1.join();t2.join();// 预期结果应该是 10wSystem.out.println(count: count);}这样我们的结果就正确了。 3.2synchronized 使⽤⽰例   1. 修饰代码块: 明确指定锁哪个对象. 锁任意对象 public class SynchronizedDemo {private Object locker new Object();public void method() {synchronized (locker) {}} }锁当前对象 public class SynchronizedDemo {public void method() {synchronized (this) {}} } 2.直接修饰普通⽅法: 锁的 SynchronizedDemo 对象 public class SynchronizedDemo {public synchronized void methond() {} } 3.修饰静态⽅法: 锁的 SynchronizedDemo 类的对象 public class SynchronizedDemo {public synchronized static void method() {} }                                                                    希望大家多多支持!
http://www.pierceye.com/news/620680/

相关文章:

  • 仿站 做网站网站备案 图标
  • 网站怎么做留言提交功能wordpress个人支付接口
  • 有哪些做室内设计好用的网站廊坊网站制作推广
  • 做村易通网站站长要收费吗?elegant wordpress
  • 网站建设专业培训网站开发网页加载缓慢查询数据库慢
  • 网站开发中 视频播放卡做soho建立网站
  • 面试网站开发员安徽建工集团网站
  • 公司制作网站价格表app系统开发费用
  • 网站建设需要学什么h5海报是怎么做出来的
  • 西平企业网站建设美媒中国或已建立了51区
  • 柯城区住房和城乡建设局网站免费搭建淘宝客网站
  • 低价机票 网站建设网站模板
  • 手机网站建设的教程视频做的网站怎么放在网上
  • 做视频网站视频空间设计是什么
  • 怎么把网站推广wordpress 百万数据
  • 乐陵市人力资源中心网站网站的内容和功能
  • wordpress网站搬家图片路径做网站的算什么行业
  • 个人网站logo重庆网络优化平台
  • 河南 网站建设静态网站是什么意思
  • 上海正规做网站公司电话基于flash网站设计
  • 每个城市建设规划在哪个网站wordpress 无法安装主题
  • 自建网站做外贸谷歌推广网站内部资源推广方法
  • 网站数据库5g一个人看的免费视频高清直播
  • 怎么做网站注册推广泰州网站建设费用
  • 找南阳建立网站的公司网址大全最新版的
  • 网站建设与维护就业前景小程序开发外包注意事项
  • 胶州网站建设哪里有天润网站建设
  • 网站备案 怎么加搜索引擎网站建设
  • 做外贸自己开公司网站网站建设三个友好
  • 深圳高端品牌网站设计网站建设实训报告收获