java多线程执行问题

class Demo extends Thread{
    public Demo(String name){
	    super(name);
	}

	public void run(){
	    for(int i=0; i<6; ++i){
		    System.out.println("i = " + i + "......Thread=" + Thread.currentThread().getName());
			try{
			    Thread.sleep(100);
			}catch(InterruptedException e){
			    System.out.println("进程被打断!");
			}
	    }
	}
}

public class Test{
   public static void main(String[] args) throws InterruptedException{

	    Demo d1 = new Demo("hjz");
		Demo d2 = new Demo("chb");
		d1.start();
		//另外当某一个线程因为异常而终止,其他的线程照样执行,不会受到任何影响!
		System.out.println(5/0);//throw new ArithmeticException()
		for(int i=0; i<6; ++i){
		    System.out.println("i = " + i + "......Thread=" + Thread.currentThread().getName());
			Thread.sleep(200);
		}

		d2.start();//如果开启新线程之前,就因为异常而中止了线程,那么新线程将无法开启!
   }
}

/*
 class Demo extends Thread{
    public Demo(String name){
	    super(name);
	}
	//public Thread(String name) {
    //    init(null, null, name, 0);
    //} 也就是在创建线程对象的时候,通过构造函数该线程就有了名字了!
	public void run(){
	    for(int i=0; i<6; ++i){
		    System.out.println("i = " + i + "......Thread=" + getName());
			try{
			    Thread.sleep(100);
			}catch(InterruptedException e){
			    System.out.println("进程被打断!");
			}
	    }
	}
}

public class Test{
   public static void main(String[] args) throws InterruptedException{
	    Demo d1 = new Demo("hjz");
		Demo d2 = new Demo("chb");

		d1.run();
		d2.run();
   }
}
 */

  

java多线程执行问题,布布扣,bubuko.com

时间: 2024-10-08 04:07:45

java多线程执行问题的相关文章

java多线程执行任务,处理共享成员变量的安全问题

java多线程执行任务时,为了避免任务的重复执行,可以通过synchronized关键字处理共享成员变量,具体代码如下: // 多线程处理任务方法 private void processMultiTask(final List<LogStatTask> list, int threadCount) throws Exception { // 根据设定的线程数处理任务列表 for (int i = 0; i < threadCount; i++) { TaskThread thread

Java多线程之后台线程不执行finally

后台线程不执行finally package wzh.daemon; import java.util.concurrent.TimeUnit; class ADaemon implements Runnable { @Override public void run() { try { System.out.println("Starting ADaemon"); TimeUnit.SECONDS.sleep(1); } catch (Exception e) { System.ou

Java多线程--让主线程等待子线程执行完毕

使用Java多线程编程时经常遇到主线程需要等待子线程执行完成以后才能继续执行,那么接下来介绍一种简单的方式使主线程等待. java.util.concurrent.CountDownLatch 使用countDownLatch.await()方法非常简单的完成主线程的等待: public class ThreadWait { public static void main(String[] args) throws InterruptedException { int threadNumber

使用JVMTI获取Java多线程程序指令执行次序

使用JVMTI获取Java多线程程序指令执行次序 在Java多线程程序中,由于线程调度,指令间的次序在每次运行时都可能不相同,有时候,我们需要得到指令次序,用来分析程序的行为.这样细粒度的底层行为用一般方法很难完成,我们需要借助 JVM Tool Interface,即JVMTI,来帮助我们获取Java虚拟机执行时的信息.本文先介绍编写JVMTI程序的基本框架,然后介绍如何使用JVMTI来获取多线程程序中指令之间的次序. JVMTI简介 JVMTI是用于编写开发与监视工具的编程接口,使用它可以检

Java多线程——&lt;三&gt;简单的线程执行:Executor

一.概述 按照<Java多线程——<一><二>>中所讲,我们要使用线程,目前都是显示的声明Thread,并调用其start()方法.多线程并行,明显我们需要声明多个线程然后都调用他的start方法,这么一看,似乎有些问题:第一.线程一旦多了,声明势必是个问题:第二.多线程启动如果通过手动执行的话,那可能一个线程已经跑完了,另外一个还没起来(我推测可能会出现这个问题).所以,我们在想,如果有个管家,能够帮我们管理这么多线程,只需要把我们定义的任务交给管家,管家就能够帮我们

Java多线程学习(吐血超详细总结)

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 目录(?)[-] 一扩展javalangThread类 二实现javalangRunnable接口 三Thread和Runnable的区别 四线程状态转换 五线程调度 六常用函数说明 使用方式 为什么要用join方法 七常见线程名词解释 八线程同步 九线程数据传递 本文主要讲了java中多线程的使用方法.线程同步.线程数据传递.线程状态及相应的一些线程函数用法.概述等. 首先讲一下进程和线程

Java多线程系列--“JUC锁”11之 Semaphore信号量的原理和示例

概要 本章,我们对JUC包中的信号量Semaphore进行学习.内容包括:Semaphore简介Semaphore数据结构Semaphore源码分析(基于JDK1.7.0_40)Semaphore示例 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3534050.html Semaphore简介 Semaphore是一个计数信号量,它的本质是一个"共享锁". 信号量维护了一个信号量许可集.线程可以通过调用acquire()来获取信号量的许可

从JAVA多线程理解到集群分布式和网络设计的浅析

对于JAVA多线程的应用非常广泛,现在的系统没有多线程几乎什么也做不了,很多时候我们在何种场合如何应用多线程成为一种首先需要选择的问题,另外关于java多线程的知识也是非常的多,本文中先介绍和说明一些常用的,在后续文章中如果有必要再说明更加复杂的吧,本文主要说明多线程的一下几个内容: 1.在应用开发中什么时候选择多线程? 2.多线程应该注意些什么? 3.状态转换控制,如何解决死锁? 4.如何设计一个具有可扩展性的多线程处理器? 5.多线程联想:在多主机下的扩展-集群? 6.WEB应用的多线程以及

java多线程心得

多并发的时候,在什么情况下必须加锁?如果不加锁会产生什么样的后果. 加锁的场景跟java的new thread和Runnable的关系是什么? 看看java的concurrentMap源码. 还有spring 的web.xml启动执行源码 spring aop http://www.cnblogs.com/FDROSE1001/p/3661895.html activemq的本质是什么? java的jms hibernate由配置文件映射到实体类的本质是什么? java反射 spring aop