`
lcy0202
  • 浏览: 176468 次
  • 性别: 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线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 Java线程:线程的调度-休眠 Java线程:线程的调度-优先级 Java线程:线程的调度-...

    Java多线程编程总结

    Java线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 Java线程:线程的调度-休眠 Java线程:线程的调度-优先级 Java线程:线程...

    java多线程笔记

    Java线程:创建与启动 7 Java线程:线程名称的设定及获取 10 Java线程:线程栈模型与线程的变量 12 Java线程:线程的调度-休眠 13 Java线程:线程的调度-优先级 16 Java线程:线程的调度-让步 19 Java线程:线程的...

    Java 线程总结

    Java线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 Java线程:线程的调度-休眠 Java线程:线程的调度-优先级 Java线程:线程的调度-...

    java线程的创建于启动

    java线程的创建于启动,适合初学者学习,讲述的还算比较详细。

    java 多线程设计模式 进程详解

    《Java线程 高清晰中文第二版》中文第二版(PDF) 前言 第一章 线程简介 Java术语 线程概述 为什么要使用线程? 总结 第二章 Java线程API 通过Thread类创建线程 使用Runable接口的线程 线程的生命周期 线程命名 ...

    java线程详解

    Java线程:创建与启动 Java线程:线程状态的转换 Java线程:线程的同步与锁 一、同步问题提出 二、同步和锁定 三、静态方法同步 四、如果线程不能不能获得锁会怎么样 五、何时需要同步 六、线程安全类 七、...

    Java线程详解.ppt

    根据定义,进程为一个数据结构及能在其上进行的一次操作, 它有两个基本特征, ...程序启动运行时,就自动产生了一个线程,main方法就是在这个线程上运行的,当不再产生新的线程时,程序就是单线程。

    java多线程示例

    Thread本质上也是一个实现了Runnable的实例,他代表一个线程的实例,并且启动线程的唯一方法就是通过Thread类的start方法。 2.实现Runnable接口,并实现该接口的run()方法.创建一个Thread对象,用实现的Runnable接口...

    Java线程:创建与启动

    SCJP5学习笔记  一、定义线程  1、扩展java.lang.Thread类。  此类中有个run()方法,...  使用实现接口 Runnable 的对象创建一个线程时,启动该线程将导致在独立执行的线程中调用对象的 run 方法。  方法 r

    java应用程序中使用线程

    3.1 Java线程 3.2 创建线程 3.3 使用线程的缺点 3.3.1 初始启动变慢 3.3.2 资源利用 3.3.2 资源利用 3.4 线程管理 3.5 共享资源的使用同步 3.5.1 同步方法和同步代码块的嵌套调用...

    Java-for-thread.zip_java 线程

    Java多线程,进程与线程概念 创建和启动Java线程 线程状态和线程控制 多线程的互斥与同步 线程的通讯 死锁的概念

    JAVA多线程运用

    (2)、创建TestCounter类,在该类中定义main函数,在main函数中定义Storage对象、Counter对象和 Printer对象,创建Counter线程和Printer线程并启动 (3)、保存文件,调试并编译运行程序。 参考程序运行效果: 3. ...

    启动两个线程,一个线程打印1~52,另一个线程打印A~Z

    启动两个线程,一个线程打印1~52,另一个线程打印A~Z

    Java多线程程序设计入门

    下面是一个创建启动一个线程的语句:Thread thread1=new Thread(); file://声明一个对象实例,即创建一个线程;Thread1.run(); file://用Thread类中的run()方法启动线程;从这个例子,我们可以通过Thread()构造方法...

    java多线程

    2. 编写一个包含主方法main的公共类(访问权限为public的类),在主方法main中,使用第1步中编写的类创建一个对象,使用这个对象调用线程“张工”,“王工”和“老板”,并启动线程(start)。 第二部分 线程联合 ...

    什么是线程?Java中如何创建和管理线程?(java面试题附答案).txt

    除了基本的线程创建和启动,Java还提供了一些管理线程的方法和工具,例如: sleep 方法:使当前线程暂停执行一段时间。 join 方法:等待其他线程执行完毕后再继续执行。 interrupt 方法:中断线程的执行。 ...

Global site tag (gtag.js) - Google Analytics