Java基础中的 线程

 创建线程的方式:

  1. 继承Thread类

    (1)定义类,继承Thread

    (2)复写Thread类中的void run()方法(因为Thread类用于描述线程,该类就定义了一个功能,用于存储线程要运行的代码。该存储功能就是run方法。)

    (3)调用线程的start方法,该方法能启动线程,并能调用run方法

    注:对象.run()仅仅是对象调用方法。而线程创建了,并没有运行;

      对象.start()开启线程并执行该线程的run方法

  2. 实现Runnable接口

    (1)定义类,实现Runnable接口

    (2)覆盖Runnable接口中的run方法。将线程要运行的代码存放在该run方法中

    (3)通过Thread类建立线程对象

    (4)将Runnable接口的子类对象作为实际参数传递给Thread类的构造函数。因为,自定义的run方法所属的对象是Runnable接口的子类对象,所以要让线程去执行指定对象的run方法,就必须明确该run方法所属的对象。

    (5)调用Thread类的start方法开启线程,并调用Runnable接口子类的run方法

  实现方式与继承方式的区别:

   实现方式好处:避免了单继承的局限性。在定义线程时,建议使用实现方式。

   继承Thread:线程代码存放在Thread子类run方法中;实现Runnable:线程代码存放在接口的子类的run方法。

继承Thread类的例子

public class TestThread2 {
    public static void main(String[] args) {

        MyThread2 mt = new MyThread2();

        mt.start();

        for (int i = 0; i < 50; i++) {
            System.out.println("TestThread-----------" + i);
        }
    }
}

class MyThread2 extends Thread{
    public void run() {
        for (int i = 0; i < 50; i++) {
            System.out.println("MyThread=========" + i);
        }
    }
}

实现Runnable接口的例子:

public class TestThread {
    public static void main(String[] args) {

        MyThread mt = new MyThread();
        Thread t = new Thread(mt);
        t.start();
        // mt.run();
        for (int i = 0; i < 50; i++) {
            System.out.println("TestThread-----------" + i);
        }
    }
}

class MyThread implements Runnable {
    public void run() {
        for (int i = 0; i < 50; i++) {
            System.out.println("MyThread=========" + i);
        }
    }

}

3.线程的方法:

   Join方法:线程对象.join(),当A线程执行到了B线程的.join()方法,A就会等待。等B线程都执行完,A才会执行。join可以用来临时加入线程执行。

 yield方法:暂停当前正在执行的线程对象,并执行其他线程。

 static Thread currentThread():获取当前线程对象

 getName():获取线程名称

 设置线程名称:setName()或者构造函数

时间: 2024-08-09 14:42:40

Java基础中的 线程的相关文章

java基础学习总结——线程(一)

永不放弃,一切皆有可能!!! 只为成功找方法,不为失败找借口! java基础学习总结——线程(一) 一.线程的基本概念 线程理解:线程是一个程序里面不同的执行路径 每一个分支都叫做一个线程,main()叫做主分支,也叫主线程. 程只是一个静态的概念,机器上的一个.class文件,机器上的一个.exe文件,这个叫做一个 进程.程序的执行过程都是这样的:首先把程序的代码放到内存的代码区里面,代码放到代码区后并没有马上开始执行,但这时候说明了一个进程准备开始,进程已 经产生了,但还没有开始执行,这就是

java基础学习总结——线程(二)

永不放弃,一切皆有可能!!! 只为成功找方法,不为失败找借口! java基础学习总结——线程(二) 一.线程的优先级别 线程优先级别的使用范例: 1 package cn.galc.test; 2 3 public class TestThread6 { 4 public static void main(String args[]) { 5 MyThread4 t4 = new MyThread4(); 6 MyThread5 t5 = new MyThread5(); 7 Thread t1

JAVA基础篇七(Java,C++中的线程)

讲到线程,Java的线程目前只知道从thread继承,并用start函数启动线程,稍后会多了解JAVA线程相关知识,补充到这一章中. C++的线程在读硕期间用到过多次,下面首先总结一下: 1.C++线程 (1)MFC多线程 这种方式我没用过,所以这里只是提一下,主要在MFC中,一般用全局函数AfxBeginThread()来创建并初始化一个线程的运行,该函数有两种重载形式,分别用于创建工作者线程和用户界面线程. (2)phtread POSIX线程(POSIX threads),简称Pthrea

Java 基础中for循环与while循环的语感

for(int i = X; i < y; i ++ ){ 循环体: }: 主要用于已知循环次数循环,可以节约2行代码和变量名重复使用,是java编程中最常用的循环. int n = 0; while(循环条件){ 循环体: n++; }: 主要用于未知循环次数的循环中,是除了for循环最常用的循环: JAVA 基础一定要吃透这两种循环,编程逻辑才不会混乱.

在学习java基础中所遇到的问题

在本周的java基础学习中,发现了自身的许多问题. 1.在学习中老师会出现记的知识混乱,分不清楚或者怀疑是不是这样的.比如在求素数的问题上我就纠结了很多次,老是在一些小细节上写错了导致程序运行错误而开始怀疑方法的正确性,而且老是搞混判断素数和求出质数的区别. import java.util.Scanner; public class MyTest3 { public static void main(String[] args) { /* * 调用我们已经定义好的判断素数的方法进行计算, 获取

java基础学习总结-----线程(一)

转:基础学习总结----线程(一)http://www.cnblogs.com/xdp-gacl/p/3633936.htmljava 一.线程的概念 线程:线程是一个程序里面不同的执行路径 进程:一个静态的概念,机器上的一个.class文件,机器上的一个.exe文件,这个叫做一个进程. 程序的执行过程: 1.首先把程序的代码放到内存的代码区里面,代码放到代码区后并没有马上开始执行,但这时候说明了一个进程准备开始,进程已经产生,但还没有开始执行,这就是进程.其实是2.一进程的执行指的是进程里面主

关于java多线程中守护线程的理解

在java中有两类线程:User Thread(用户线程).Daemon Thread(守护线程) 守护线程并非只有虚拟机内部提供,用户在编写程序时也可以自己设置守护线程.下面的方法就是用来设置守护线程的. 1 Thread daemonTread = new Thread(); 2 3 // 设定 daemonThread 为 守护线程,default false(非守护线程) 4 daemonThread.setDaemon(true); 5 6 // 验证当前线程是否为守护线程,返回 tr

JAVA基础知识系列---线程与进程

进程与线程 进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1--n个线程. 线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小. 1.1多线程与多进程 多进程是指操作系统能同时运行多个任务(程序). 多线程是指在同一程序中有多个顺序流在执行. 1.2线程的状态转换 1.新状态:线程对象已经创建,还没有在其上调用start()方法. 2.可运行状态:当线程有资格运行,但调度程序还没有把它选定为运行线程时线程

I学霸官方免费教程三十九 :Java基础教程之线程

线程 线程和进程 进程:系统运行程序的最小单位:一个进程最少有一个线程线程:程序执行任务的最小单位:线程与线程之间并行一个进程至少有一个线程,在java中这个线程称为主线程,由系统创建,运行main方法.这样只有一个线程的程序也被称为单线程程序.主线程从程序入口main方法开始执行代码,执行任意方法中的代码都是按照自上而下的顺序执行的,如果只有一个主线程,又想实现在线听音乐这个功能的话,就很难实现.因为主线程必须先去下载音乐:下载完成后,在执行播放音乐:这显然不能满足当今人们对在线听音乐的需求.