为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
深入浅出Java多线程_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

深入浅出Java多线程

Arthur JAVA开发工程师
难度入门
时长 4小时 0分
  • 如何正确停止Java中的线程——not stop()方法 //错误的停止线程的方法 armyTaskOfSuiDynasty.stop(); armyTaskOfRevolt.stop(); //正确的停止线程的方法(使用做标记的方法来正确退出) armyTaskOfSuiDynasty.keepRunning=false; armyTaskOfRevolt.keepRunning=false; 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • 隋唐演义实战开发---关键先生 public class KeyPersonThread extends Thread { @Override public void run() { System.out.println(Thread.currentThread().getName()+"开始了战斗..."); for(int i=0;i<10;i++){ System.out.println(Thread.currentThread().getName()+"左突右杀,攻击隋军..."); } syso..."结束了战斗!"; } } /** *隋唐演义大舞台 */ public class Stage extends Thread { @Override public void run() { System.out.println("正当双方杀得正High,半路杀出了个程咬金!"); Thread mrChen=new KeyPersonThread(); mrChen.setName("程咬金"); //停止军队作战 //停止线程的方法 armyTaskOfSuiDynasty.keepRunning=false; armyTaskOfRevolt.keepRunning=false; try { Thread.sleep(2000); } catch (InterruptedException e1) { e1.printStackTrace(); } /** * 历史大戏留给关键人物 */ mrChen.start(); //万众瞩目,所有线程等待程先生完成历史使命 try { mrChen.join();//对象是mrChen } catch (InterruptedException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } System.out.println("谢谢观看隋唐演义,再见!"); } Ps:Thread.currentThread()表示静态意思。
    查看全部
  • 隋唐演义实战开发---军队 II /** * 军队线程 * 模拟作战双方的行为 */ public class ArmyRunnable implements Runnable { //volatile保证了线程可以正确地读取其他线程写入的值 //可见性的问题 ref JMM,happens-before原则 volatile boolean keepRunning=true; @Override public void run() { while (keepRunning) { // 发动五连击 for (int i = 0; i < 5; i++) { System.out.println(Thread.currentThread().getName() + "进攻对方[" + i + "]"); // 让出了处理器时间,下一次谁进攻还不一定呢 Thread.yield(); } } System.out.println(Thread.currentThread().getName() + "结束了战斗"); } } 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • 隋唐演义实战开发---军队 I /** *隋唐演义大舞台 */ public class Stage extends Thread { @Override 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(1); } catch (InterruptedException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } armyTaskOfSuiDynasty.keepRunning=false; armyTaskOfRevolt.keepRunning=false; try { armyOfRevolt.join(); } catch (InterruptedException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } } public static void main(String[] args) { new Stage().start(); } } 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • 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 变量的运算是线程安全的。这句话论据貌似没有错,论点确实错的. 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • 隋唐演义实战开发---演员简介 public class Actor extends Thread { @Override public void run() { System.out.println(getName() + "是一个演员"); int count = 0; boolean keepRunning = true; while (keepRunning) { System.out.println(getName() + "登台演出:" + (++count)); if(count==100){ keepRunning=false; } if(count%10==0){ try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } System.out.println(getName() + "演出结束了"); } public static void main(String[] args) { Thread actor = new Actor(); actor.setName("Mr.Thread"); actor.start(); Thread actressThread=new Thread(new Actress(),"Ms.Runnable"); actressThread.start(); } } class Actress implements Runnable{ @Override public void run() { ...//类似Thread的run()方法 } } Ps1:处理同一时间同一个核只能处理一个线程;只有当一个线程sleep的时候CPU才能处理另一个线程,所以示例中actor和actress是交替出现的。 Ps2:注意上面代码Runnable中的run()里Thread.currentThread().getName()。
    查看全部
  • 争用条件
    查看全部
  • Thread的方法。 在java.lang包里面 有Thread类和Runable接口
    查看全部
  • Thread常用方法 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • Java实现线程的两种主要方法: ①.继承Thread类 ②.实现Runnable接口 但是二者都必须重写public void run()方法 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • 多线程基础概念介绍 1.进程:是程序或任务的执行的过程,具有动态性,它持有资源(共享内存,共享文件)和线程(即进程是资源和线程的载体) 2.线程:是系统中最小的执行单元,同一进程中有多个线程,线程共享线程的资源 3.线程交互:即线程通信 4.线程之间存在同步和互斥 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • 在一个.java文件中,只能有一个public类,可以有多个类。
    查看全部
  • Thread常用方法
    查看全部
  • public void run()为我们提供了线程执行的方法
    查看全部
  • 线程是系统中最小的执行单元
    查看全部

举报

0/150
提交
取消
课程须知
本课程的学习,需要小伙伴们具有面向对象基础知识及 Java 语言基础。如果您是新手,建议先移步 《Java入门第一季》和《Java入门第二季》
老师告诉你能学到什么?
1、Java 中如何使用线程 2、什么是争用条件 3、线程如何交互
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!