`
lcy0202
  • 浏览: 178223 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

java 线程(一) 线程创建以及启动

 
阅读更多

java中有两种方式进行线程的创建

1. 继承thread类创建线程类

  步骤:重写Thread类的run方法,也就是线程执行体;创建Thread的子类,也就是创建线程对象;调用start方法记性启动。

   //通过继承Thread类来创建线程类

public class FirstThread extends Thread{
	private int i ;
	//重写run方法,run方法的方法体就是线程执行体
	public void run()
	{
		for ( ; i < 100 ; i++ )
		{
			//当线程类继承Thread类时,可以直接调用getName()方法来返回当前线程的名。
			//如果想获取当前线程,直接使用this即可
			//Thread对象的getName返回当前该线程的名字
			System.out.println(getName() +  " " + i);
		}
	}
	
    public static void main(String[] args) 
    {
        for (int i = 0; i < 100;  i++)
        {
			//调用Thread的currentThread方法获取当前线程
			System.out.println(Thread.currentThread().getName() +  " " + i);
			if (i == 20)
			{
				//创建、并启动第一条线程
				new FirstThread().start();
				//创建、并启动第二条线程
				new FirstThread().start();
			}
        }
    }
}
 

 结果是: 

    Thread-0 53

Thread-1 4
Thread-0 54
main 25
Thread-0 55
Thread-1 5
Thread-0 56
Thread-0 57

  可以发现:创建的2个线程是没有共享一个i数据的

2. 实现Runnable接口创建创建线程类

创建步骤:编写实现Runnable接口的实现类;并重写run方法,也就是线程执行体;创建该实现类的实例对象,以此作为Thread的target进行Thread对象的创建,此时的对象才是真正的线程对象

//通过实现Runnable接口来创建线程类
public class SecondThread implements Runnable
{
	private int i ;
	//run方法同样是线程执行体
	public void run()
	{
		for ( i=0; i < 100 ; i++ )
		{
			//当线程类实现Runnable接口时,
			//如果想获取当前线程,只能用Thread.currentThread()方法。
			System.out.println(Thread.currentThread().getName() + "  " + i);
		}
	}
	
    public static void main(String[] args) 
    {
        for (int i = 0; i < 100;  i++)
        {
			System.out.println(Thread.currentThread().getName() + "  " + i);
			if (i == 20)
			{
				SecondThread st = new SecondThread();
				//通过new Thread(target , name)方法创建新线程
				new Thread(st , "新线程1").start();
				new Thread(st , "新线程2").start();
			}
        }
    }
}
 

 

 

结果:新线程1 52

新线程2  51
新线程1  53
main  31
新线程1  55
新线程2  54
新线程1  56

 


可以发现,两个线程对象是共享一个数据资源的

总结:比较两种方式的区别

        Thread方式:已经继承了THread类,所以不能继承其他父类,但是编写简单

        Runnable方式:实现了Runnable接口,还可以继承其他类;可以多个线程共享同一份资源;编写相对复杂

而事实上,普遍都使用实现runnable方式去进行多线程应用开发。













 

分享到:
评论

相关推荐

    JAVA 线程中启动线程

    在Java编程语言中,线程是程序执行的基本单元,它允许程序并发地执行多个任务。在多线程环境中,程序的...在编写`test`这样的示例时,你可以创建并启动线程,测试各种线程控制和同步方法,从而加深对Java线程的理解。

    Java使用Callable和Future创建线程操作示例

    此外,Java中的线程创建方式还包括使用Runnable接口、Thread类、Executor框架等。不同的线程创建方式都有其优缺,需要根据实际情况选择合适的线程创建方式。 本文主要介绍了Java使用Callable和Future创建线程操作的...

    Java线程.ppt

    学习Java线程,理解其创建、状态转换、调度和控制,以及如何处理线程间的互斥和同步,对于开发高效、稳定的并发程序至关重要。通过深入研究这些概念,开发者能够编写出更符合现代计算需求的高质量软件。

    Java线程详解大全

    本文将深入探讨Java线程的概念、生命周期、实现方式以及相关的同步机制。 首先,理解线程的基本概念至关重要。线程是程序中一个单一的顺序控制流,它在程序的上下文中运行,但具有独立的执行路径。多线程则是指在...

    java多线程代码案例(创建线程,主线程,线程优先级,线程组,线程同步,线程间的通信)

    本文将深入探讨Java多线程中的关键知识点,包括创建线程、主线程、线程优先级、线程组、线程同步以及线程间的通信。 1. **创建线程** 在Java中,可以通过两种方式创建线程:继承`Thread`类或实现`Runnable`接口。...

    Java线程状态流转图

    Java线程状态流转图是一种用于描述Java线程生命周期中不同的状态和状态转换的图形表示方式。该图形展示了Java线程从创建到终止的整个生命周期,并详细介绍了每种状态的特点和转换规则。 NEW(初始化状态) 在Java...

    Java线程(第三版)

    《Java线程(第三版)》是一本深入探讨Java线程技术的专业书籍,旨在帮助开发者理解和掌握Java平台上的多线程编程。Java线程是并发编程的重要组成部分,它允许程序同时执行多个任务,从而充分利用系统资源,提高程序的...

    Java线程使用教程

    Java线程是Java编程语言中的一个核心概念,它允许程序同时执行多个任务,极大地提高了程序的并发性和效率。本教程将深入探讨Java线程的使用,帮助开发者掌握这一关键技术。 一、线程基础 1. **线程的概念**:线程...

    java多线程Demo

    Java线程有10个优先级(MIN_PRIORITY, NORM_PRIORITY, MAX_PRIORITY),默认优先级是NORM_PRIORITY。但是,线程优先级并不保证绝对的执行顺序,操作系统调度策略可能影响实际执行顺序。 7. join()方法: 一个线程...

    在Java中创建线程有两种方法

    在`main`方法中,你可以创建这个线程类的实例,并调用`start()`方法启动线程: ```java MyThread myThread = new MyThread(); myThread.start(); ``` 这种方式适用于任务与线程类紧密关联的情况,因为线程类...

    java线程深入解析

    本文将深入解析Java线程的相关知识点,包括线程的定义、创建、状态管理、线程同步和安全问题。 1. **线程定义** 在Java中,线程是进程中的单一顺序控制流,是程序执行的基本单元。线程在进程的上下文中运行,共享...

    java线程的创建于启动

    ### Java线程的创建与启动详解 #### 一、创建线程的方式 在Java中创建线程有两种主要方式:一种是通过继承`java.lang.Thread`类来创建;另一种则是通过实现`java.lang.Runnable`接口。 ##### 1. 继承`Thread`类 ...

    java tcp server 创建线程监听端口,创建线程处理连接

    下面将详细讲解如何利用Java创建一个TCP服务器,使用线程来监听端口并处理连接。 一、TCP服务器基础 TCP是一种面向连接的、可靠的传输协议,它保证了数据包在传输过程中的顺序和完整性。在Java中,我们可以使用`...

    Java多线程知识点总结

    线程池是一种多线程处理形式,它将线程和任务的概念分离开来,能够有效管理线程资源,减少线程创建和销毁的开销,提高程序性能。Java中可以通过Executors类快速创建线程池。 随着Java版本的更新,Java也引入了新的...

    java线程实例 各种小Demo

    Java线程是多任务编程的重要概念,它允许程序同时执行多个独立的任务,从而提高系统效率和响应速度。在Java中,线程可以分为用户线程和守护线程,前者是程序运行的基础,而后者是在所有用户线程结束时才终止的后台...

    java线程.rar

    Java线程是Java编程语言中...以上知识点覆盖了Java线程的基础概念、创建方式、状态管理、同步机制以及高级特性,是Java程序员必须掌握的重要内容。通过深入理解和熟练应用这些知识,可以编写出高效、安全的多线程程序。

    Java 多线程 PPT

    创建Java线程主要有两种方式: 1. 继承Thread类:创建Thread的子类并重写run()方法,然后通过调用start()方法启动线程。 2. 实现Runnable接口:创建一个实现了Runnable接口的类,实现run()方法,然后将该类的实例...

    JAVA线程学习(源代码)

    ExecutorService可以帮助我们管理和控制线程池,减少线程创建和销毁的开销。Future表示异步计算的结果,可以用来检查任务是否完成或者获取结果。Semaphore用于控制同时访问特定资源的线程数量,而CyclicBarrier则...

    Java 模拟线程并发

    除了基本的线程创建,Java还提供了synchronized关键字用于线程同步,防止多个线程同时访问共享资源导致数据不一致。synchronized可以修饰方法或代码块,当一个线程正在执行synchronized代码时,其他线程必须等待。 ...

    java线程实战手册

    《Java线程实战手册》是Java并发编程领域的一份重要参考资料,主要针对Java开发者,旨在帮助他们深入理解和熟练掌握Java中的多线程技术。虽然这里只提供了第一章的内容,但这一章通常会涵盖基础理论和核心概念,对于...

Global site tag (gtag.js) - Google Analytics