-
package com.imooc.concurrent.base; /** * 隋唐演义大戏舞台 * * @author Administrator * */ public class Stage extends Thread { public void run() { ArmyRunnable armyTaskOfSuiDynasty = new ArmyRunnable(); ArmyRunnable armyTaskOfRevolt = new ArmyRunnable(); // 使用Runnable接口创建线程 Thread armyOfSuiDynasty = new Thread(armyTaskOfSuiDynasty, "隋军"); Thread armyOfRevolt = new Thread(armyTaskOfRevolt, "农民起义军"); // 启动线程,让军队开始作战 armyOfSuiDynasty.start(); armyOfRevolt.start(); // 舞台线程休眠,大家专心观看军队厮杀 try { Thread.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); } armyTaskOfSuiDynasty.keepRunning = false; armyTaskOfRevolt.keepRunning = false; try { armyOfRevolt.join(); } catch (InterruptedException e) { e.printStackTrace(); } } public static void main(String[] args) { new Stage().start(); } }查看全部
-
package com.imooc.concurrent.base; // 2-4 Java线程-隋唐演义实战开发---军队 // 军队线程 // 模拟作战双方的行为 public class ArmyRunnable implements Runnable { boolean keepRunning; @Override public void run() { while(keepRunning){ // 发动5连击 for(int i = 0 ; i <= 5 ; i++){ System.out.println(Thread.currentThread().getName() + "进攻对方[" + i + "]"); } } } }查看全部
-
Thread中start()方法,join()方法,sleep()方法,volatite作用 Java Thread中,start()方法,等其他代码(Thread.join()和Thread.sleep()除外)执行完后再执行它。 Java Thread中, join()方法主要是让调用该方法的thread完成run方法里面的东西后, 再执行join()方法后面的代码。 Java Thread中, sleep()方法主要是让调用该方法的thread完成run方法里面的东西后且等待休眠的时候结束(唤醒), 再执行sleep()方法后面的代码。 一. volatite 简述 Java 语言提供了一种稍弱的同步机制,即 volatile 变量.用来确保将变量的更新操作通知到其他线程,保证了新值能立即同步到主内存,以及每次使用前立即从主内存刷新. 当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的. 二. volatite 线程安全? volatile 变量对所有线程是立即可见的,对 volatile 变量所有的写操作都能立即反应到 其他线程之中,换句话说:volatile 变量在各个线程中是一致的,所以基于 volatile 变量的运算是线程安全的。这句话论据貌似没有错,论点确实错的 ----------------- 注:必须将keepRunning变量声明为volatile JMM提供了volatile变量定义、final、synchronized块来保证可见性。 例如:线程a在将共享变量x=1写入主内存的时候,如何保证线程b读取共享变量x的值为1,这就是JMM做的事情。JMM通过控制主内存与每个线程的本地内存之间的交互,来为java程序员提供内存可见性保证 ------------------------- Thread类的方法: .yield() 暂停(并不是结束)当前正在执行的线程对象,让所有进程去竞争处理器。 .join() 其余全部线程等待该线程终止。在控制线程结束非常有用。 volatile:跟Java的内存模型有关,线程执行时会将变量从主内存加载到线程工作内存,建立一个副本,在某个时刻写回。valatile指的每次都读取主内存的值,有更新则立即写回主内存。保证了valatile变量在各个线程间的可见性。查看全部
-
线程的同步性:两个或多个线程同时运行此方法有先后顺序,你做完我在做 线程的互斥性:两个或多个线程运行着两个方法时,有排斥性,必须等一个线程运行完一个方法,另一个线程才能运行。查看全部
-
线程是系统中最小的执行单元 同一进程中有多个线程 线程共享进程的资源查看全部
-
Thread常用方法查看全部
-
currentThread()方法:返回对当前正在执行的线程对象的引用。查看全部
-
多线程查看全部
-
互斥 同步查看全部
-
线程基本方法查看全部
-
实现线程的两种方法查看全部
-
进程持有线程和资源(内存等) ,是动态性的。线程是静态性的。查看全部
-
Therad常用方法查看全部
-
要点回顾查看全部
-
每一个java文件中只能有一个public类 两种方法实现线程: 1、继承 Thread 类 class MyThread extends Thread{}; Thread myThread = new MyThread(); myThread.start(); 2、实现Runnable类 class MyRunnable implements Runnable{} Thread myRunnable = new Thread(new MyRunnable); myRunnable.start(); 3、Thread启动后执行run()方法 4、若实现接口通过Thread.currentThread().getName()方法获取当前线程名称,继承Thread则getName()方法获取当前线程。 Thread类的方法: .getName() 返回线程的名字 .setName(String Name) 改变线程的名字 .start() 使该线程开始执行,Java 虚拟机调用该线程的 run 方法。 .sleep(long millis) 在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。线程不丢失任何监视器的所属权。 .currentThreat() 返回对当前正在执行的线程对象的引用。(静态方法,返回Thread类型)查看全部
举报
0/150
提交
取消