JAVA线程学习(二)

这是一个晓得项目共有三个类

第一个:

package com;

//军队线程

//模拟作战双方的行为

public class ArmyRunnable implements Runnable {

//volatile保证了线程可以正确的读取其他线程写入的值

//可见性

volatile boolean keepRunning = true;

@Override

public void run() {

// TODO Auto-generated method stub

while(keepRunning)

{

for(int i = 0; i < 5; ++i)

{

System.out.println(Thread.currentThread().getName()+ "进攻对方["+ i +"]");

//让出了处理器的时间下一次该谁进攻还不一定呢

Thread.yield();

}

}

System.out.println(Thread.currentThread().getName()+ "结束战斗!");

}

}

第二个:

package com;

/*

* 隋唐演义大戏舞台

* */

public class Stage extends Thread {

public void run(){

System.out.println("欢迎观看隋唐演义!");

try {

Thread.sleep(5000);

} catch (InterruptedException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

System.out.println("大幕徐徐拉开");

try {

Thread.sleep(5000);

} catch (InterruptedException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

System.out.println("话说隋朝末年,随军与农民起义军杀的昏天黑地。。。。");

ArmyRunnable armyTaskOfSuiDynastry = new ArmyRunnable();

ArmyRunnable armyTaskOfRevolt = new ArmyRunnable();

//使用Runnable接口创建线程

Thread armyOfSuiDynastry = new Thread(armyTaskOfSuiDynastry, "随军");

Thread armyOfRevolt = new Thread(armyTaskOfRevolt, "农民起义军");

//启动线程让军队开始作战

armyOfSuiDynastry.start();

armyOfRevolt.start();

//舞台线程休眠,大家专心观看军队的厮杀

try {

Thread.sleep(50);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

System.out.println("正当双方激战正酣, 半路杀出个程咬金");

Thread mrCheng = new KeyPersonThread();

mrCheng.setName("程咬金");

System.out.println("程咬金的理想就是结束战斗, 是百姓安居乐业!");

armyTaskOfSuiDynastry.keepRunning = false;

armyTaskOfRevolt.keepRunning = false;

try {

Thread.sleep(2000);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

/*

* 历史大戏留给关键人物

* */

mrCheng.start();

//万众瞩目,所有线程等待先生完成历史使命

try {

mrCheng.join();

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

System.out.println("战争结束,人民安居乐业,程先生实现了积极地人生梦想,为人民做出了贡献");

System.out.println("表演结束,再见");

}

public static void main(String[] args) {

// TODO Auto-generated method stub

new Stage().start();

}

}

第三个:

package com;

public class KeyPersonThread extends Thread {

public void run(){

System.out.println(Thread.currentThread().getName() + "开始战斗了!");

for(int i = 0; i < 10; ++i){

System.out.println(Thread.currentThread().getName() + "左突右杀, 攻击随军!");

}

System.out.println(Thread.currentThread().getName() + "战斗结束了!");

}

}

时间: 2024-08-03 21:13:23

JAVA线程学习(二)的相关文章

Java线程学习笔记(二) 线程的异常捕捉

线程异常的捕捉: 正常的情况下,我们在main()方法里是捕捉不到线程的异常的,例如以下代码: public class ExceptionThread implements Runnable{ @Override public void run() { throw new NullPointerException(); } public static void main(String[] args) { ExecutorService executorService = Executors.n

Java线程学习笔记(一)

一.线程的创建方式: 老掉牙的话题了,继承 java.lang.Thread父类或者实现Runnalbe接口,这里就提一句: class Thread implements Runnable Thread也是继承了Runnable接口的,Runnable才是大哥. 重写run(),run()里放的都是具体的业务,包括对线程的具体操作. class Thread1 implements Runnable { int i; Thread1(int i) { this.i = i; } @Overri

Java线程学习经典例子-读写者演示

Java线程学习最经典的例子-读写者,主要用到Thread相关知识如下: -         线程的start与run -         线程的休眠(sleep) -         数据对象加锁(synchronized) -         数据对象的等待与释放(wait and notify) 程序实现: -ObjectData数据类对象,通过synchronized关键字实现加锁,在线程读写者中使用. -ConsumerThread消费者线程,读取数据对象中count值之后,通知生产者

黑马程序与----java线程学习

线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元.一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成.另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源.一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行.由于线程之间的相互制约,致使线程在运行中呈现出间断性.线程也有就绪.阻塞和运

java线程学习(一)

1.简介 java基础知识部分线程创建的三种方式.线程执行的样例. 代码地址:http://git.oschina.net/blue_phantom/javaj 包位置:package com.bluej.javaj.thread.first; 2.创建线程 继承Thread类.实现Runnale接口.实现Callable接口. 1 /** 2 * 创建线程方式一 3 * @author xingdongjie 4 * 5 */ 6 class CreateThread1 extends Thr

java 线程学习。

一.操作系统中线程和进程的概念 现在的操作系统是多任务操作系统.多线程是实现多任务的一种方式. 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程.比如在Windows系统中,一个运行的exe就是一个进程. 线程是指进程中的一个执行流程,一个进程中可以运行多个线程.比如java.exe进程中可以运行很多线程.线程总是属于某个进程,进程中的多个线程共享进程的内存. "同时"执行是人的感觉,在线程之间实际上轮换执行. 二.Java中的线程 使用

java核心学习(二十一) 多线程---创建启动线程的三种方式

本节开始java多线程编程的学习,对于操作系统.进程.线程的基本概念不再赘述,只是了解java对于多线程编程的支持有哪些. 一.继承Thread类来创建线程 java语言中使用Thread类来代表线程,代表线程的类可以通过继承Thread类并重写run()方法来实现多线程开发,调用线程类实例的start方法来启动该线程.下面来试一试 package ThreadTest; public class FirstThread extends Thread{ private int i; public

python学习之进程线程学习二

一.线程介绍 处理线程的模块是threading,multiprocessing模块处理方式跟threading相似 开启线程的两种方式: 例子: from threading import Thread from multiprocessing import Process def work(name):     print('%s say hello' %name) if __name__ == '__main__':     t = Thread(target=work, args=('h

java线程学习-Thread.currentTread().getName()和this.getName()的区别

很久没有写java程序了,由于为了改变目前的状况,打算花两天时间学习一下java的线程开发和高并发. 线程开发使用thread类,或者runnable接口,而且thread类也是实现了runnable接口的. 先来个小甜点作为开始,如下为创建多个线程,并且同时处理. package firstThreadStudy; public class MyThread extends Thread { public MyThread(){ System.out.println("MyThread cur