-
//数组输出 public static void printArr(int[] arr){ for(int i=0;i<arr.length;i++){ if(i!=arr.length-1){ System.out.print(arr[i]+","); }else{ System.out.println(arr[i]); } } }查看全部
-
public static void main(String[] ages){ int[] arr={11,22,22,33,44,29}; Arrays.sort(arr); for (int i : arr) { System.out.println(i); } }查看全部
-
在程序设计语言中没有哪一种特性如线程一般矛盾。一方面可以简化模型,编写强大的代码,另一方面会因为考虑不周而面临bug。查看全部
-
一、ArmyRunnable.java volatile boolean keepRunning = true; //volatile保证了线程可以正确的读取其他线程写入的值 //可见性 ref JMM, happens-before原则 -------------------------------------------------------------------------------------------- //军队线程 //模拟作战双方的行为 public class ArmyRunnable implements Runnable { //volatile保证了线程可以正确的读取其他线程写入的值 //可见性 ref JMM, happens-before原则 volatile boolean keepRunning = true; @Override public void run() { while(keepRunning){ //发动5连击 for(int i=0;i<5;i++){ System.out.println(Thread.currentThread().getName()+"进攻对方["+i+"]"); //让出了处理器时间,下次该谁进攻还不一定呢! Thread.yield(); } } System.out.println(Thread.currentThread().getName()+"结束了战斗!"); } }查看全部
-
CPU一次只能處理一個線程,所以兩個線程交替進行查看全部
-
本来不想说的,做的太生动了,太棒了查看全部
-
当多个线程同时共享访问同一数据(内存区域)时,每个线程都尝试操作该数据,从而导致数据被破坏(corrupted),这种现象称为争用条件 原因是,每个线程在操作数据时,会先将数据初值读【取到自己获得的内存中】,然后在内存中进行运算后,重新赋值到数据。 争用条件 原因: 线程1在还【未重新将值赋回去时】,线程1阻塞,线程2开始访问该数据,然后进行了修改,之后被阻塞的线程1再获得资源,而将之前计算的值覆盖掉线程2所修改的值,就出现了数据丢失情况查看全部
-
哪里有好的java内存讲解视频啊查看全部
-
interrupt方法中断线程查看全部
-
当多个线程同时共享访问同一数据(内存区域)时,每个线程都尝试操作该数据,从而导致数据被破坏(corrupted),这种现象称为争用条件 原因是,每个线程在操作数据时,会先将数据初值读【取到自己获得的内存中】,然后在内存中进行运算后,重新赋值到数据。 争用条件 原因: 线程1在还【未重新将值赋回去时】,线程1阻塞,线程2开始访问该数据,然后进行了修改,之后被阻塞的线程1再获得资源,而将之前计算的值覆盖掉线程2所修改的值,就出现了数据丢失情况查看全部
-
9查看全部
-
1、cpu在一个时间片以内,只能执行一个线程,或者说在一个时间片以内只有一个线程能获得cpu来执行它。 2、就像是每个朝代(相当于时间片)只能有一支军队(相当于一个个的线程)获得政权(相当于cpu)一样; 注:cpu在执行指令的时候,是划分为一个个的时间片来执行的; 在一个时间片以内,具体执行哪个线程要看该线程的优先级等因素。查看全部
-
1.加入join是为了让舞台线程最后停止,如果不加有可能舞台线程结束,军队线程还未停止,就好比导演喊停,演员还在演!可以在join后面加入测试语句System.out.println("舞台结束!");,然后去掉或者保留join观察效果。 2.volatile 关键字 保证了线程可以正确地读取其他线程写入的值,如果不写成volatile,由于可见性的问题,当前线程有可能不能读到这个值//可见性JMM(JAVA内存模型)happens-before原则、可见性原则 用volatile修饰的变量,线程在每次使用变量的时候,都会读取变量修改后的值 3.Thread.yield();//让出处理器时间,公平竞争查看全部
-
interrupt()--初衷并不是用于停止线程 在调用sleep()或者join()的时候,一旦其他线程调用interrupt(),它将会收到一个异常,这些被阻塞的线程因为某些原因需要被唤醒,比如外部发生了中断而需要响应,这时就采用抛出异常的方式来使其作出响应。总而言之,interrupt()方法并不能正确地停止进程 一个线程在阻塞状态下(例如sleep),此时interrupt的话,将会产生两个结果: 1、进程的interrupt状态被清除(cleard)而非被设置(set)。 2、sleep方法会抛出异常。查看全部
-
隋唐演义三个对象: 军队-ArmyRunnable; 英雄人物-KeyPersonThread; 舞台-Stage查看全部
举报
0/150
提交
取消