Java多线程--线程操作范例

1、实例要求

设计一个线程操作类,要求可以产生三个线程对象,并可以分别设置三个线程的休眠时间:

线程A : 休眠10秒

线程B: 休眠20秒

线程C : 休眠30秒

2、通过继承Thread类

在Thread类中直接存在了name属性。

class MyThread extends Thread{
	private int time ;
	public MyThread(String name,int time){
		super(name) ;	// 设置线程名称
		this.time = time ;	// 设置休眠时间
	}
	public void run(){
		try{
			Thread.sleep(this.time) ;	// 休眠指定的时间
		}catch(InterruptedException e){
			e.printStackTrace() ;
		}
		System.out.println(Thread.currentThread().getName() + "线程,休眠"
			+ this.time + "毫秒。") ;
	}
};
public class ExecDemo01{
	public static void main(String args[]){
		MyThread mt1 = new MyThread("线程A",10000) ;	// 定义线程对象,指定休眠时间
		MyThread mt2 = new MyThread("线程B",20000) ;	// 定义线程对象,指定休眠时间
		MyThread mt3 = new MyThread("线程C",30000) ;	// 定义线程对象,指定休眠时间
		mt1.start() ;	// 启动线程
		mt2.start() ;	// 启动线程
		mt3.start() ;	// 启动线程
	}
};

3、通过实现Runnable接口

应该添加一个name属性,以保存线程名称。

class MyThread implements Runnable{
	private String name ;
	private int time ;
	public MyThread(String name,int time){
		this.name = name ;	// 设置线程名称
		this.time = time ;	// 设置休眠时间
	}
	public void run(){
		try{
			Thread.sleep(this.time) ;	// 休眠指定的时间
		}catch(InterruptedException e){
			e.printStackTrace() ;
		}
		System.out.println(this.name + "线程,休眠"
			+ this.time + "毫秒。") ;
	}
};
public class ExecDemo02{
	public static void main(String args[]){
		MyThread mt1 = new MyThread("线程A",10000) ;	// 定义线程对象,指定休眠时间
		MyThread mt2 = new MyThread("线程B",20000) ;	// 定义线程对象,指定休眠时间
		MyThread mt3 = new MyThread("线程C",30000) ;	// 定义线程对象,指定休眠时间
		new Thread(mt1).start() ;	// 启动线程
		new Thread(mt2).start() ;	// 启动线程
		new Thread(mt3).start() ;	// 启动线程
	}
};
时间: 2025-01-28 00:23:36

Java多线程--线程操作范例的相关文章

java 多线程-线程通信实例讲解_java

线程通信的目标是使线程间能够互相发送信号.另一方面,线程通信使线程能够等待其他线程的信号. 通过共享对象通信 忙等待 wait(),notify()和 notifyAll() 丢失的信号 假唤醒 多线程等待相同信号 不要对常量字符串或全局对象调用 wait() 通过共享对象通信 线程间发送信号的一个简单方式是在共享对象的变量里设置信号值.线程 A 在一个同步块里设置 boolean 型成员变量 hasDataToProcess 为 true,线程 B 也在同步块里读取 hasDataToProc

Java多线程-线程的同步与锁的问题_java

一.同步问题提出 线程的同步是为了防止多个线程访问一个数据对象时,对数据造成的破坏. 例如:两个线程ThreadA.ThreadB都操作同一个对象Foo对象,并修改Foo对象上的数据. package cn.thread; public class Foo { private int x = 100; public int getX() { return x; } public int fix(int y) { x = x - y; return x; } } package cn.thread

java多线程:线程体往外抛出异常的处理机制实践

1当线程的线程体内部无捕获异常,将异常抛出线程体外,不同情况下,程序处理机制 测试类 1 package com.ehking.bankchannel.domesticremit.facade.impl; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 import java.util.concurrent.Executor; 6 import java.util.concurrent.Executors; 7 8 9 pub

Java多线程--线程常用操作方法

1.取得和设置线程名称 class MyThread implements Runnable{ // 实现Runnable接口 public void run(){ // 覆写run()方法 for(int i=0;i<3;i++){ System.out.println(Thread.currentThread().getName() + "运行,i = " + i) ; // 取得当前线程的名字 } } }; public class ThreadNameDemo{ publ

详解Java多线程编程中线程的启动、中断或终止操作_java

线程启动: 1.start() 和 run()的区别说明start() : 它的作用是启动一个新线程,新线程会执行相应的run()方法.start()不能被重复调用. run() : run()就和普通的成员方法一样,可以被重复调用.单独调用run()的话,会在当前线程中执行run(),而并不会启动新线程! 下面以代码来进行说明. class MyThread extends Thread{ public void run(){ ... } }; MyThread mythread = new

JAVA多线程(三个猴子分桃)操作,为什么总是出现一个线程,求大神!

问题描述 JAVA多线程(三个猴子分桃)操作,为什么总是出现一个线程,求大神! public class ThreadDemo { int mutex = 100; boolean isRun = true; int i = 0; public static void main(String[] args) { Monkey m = new ThreadDemo().new Monkey(); new Thread(m, "1").start(); new Thread(m, &quo

Java多线程编程中synchronized线程同步的教程_java

0.关于线程同步 (1)为什么需要同步多线程?线程的同步是指让多个运行的线程在一起良好地协作,达到让多线程按要求合理地占用释放资源.我们采用Java中的同步代码块和同步方法达到这样的目的.比如这样的解决多线程无固定序执行的问题: public class TwoThreadTest { public static void main(String[] args) { Thread th1= new MyThread1(); Thread th2= new MyThread2(); th1.sta

总结Java中线程的状态及多线程的实现方式_java

线程的状态线程状态图: 说明: 线程共包括以下5种状态.1. 新建状态(New) : 线程对象被创建后,就进入了新建状态.例如,Thread thread = new Thread().2. 就绪状态(Runnable): 也被称为"可执行状态".线程对象被创建后,其它线程调用了该对象的start()方法,从而来启动该线程.例如,thread.start().处于就绪状态的线程,随时可能被CPU调度执行.3. 运行状态(Running) : 线程获取CPU权限进行执行.需要注意的是,线

多线程-java 并发处理耗时操作的问题

问题描述 java 并发处理耗时操作的问题 刚刚写了个测试程序 原本想使用多线程并发处理 来节省时间,结果反而更耗时.请各位指点一下. 主方法: public class MainAction { public static void main(String[] args) { /*new Action1().run(); new Action2().run(); new Action3().run();*/ new Thread(new Action1()).start(); new Thre