JavaSE——多线程

本文介绍了Java中多线程的概念、实现方式、线程状态、调度、休眠、强制运行、礼让以及多线程同步,详细讲解了通过继承Thread类和实现Runnable接口创建线程,以及线程同步避免数据不安全问题的方法。
摘要由CSDN通过智能技术生成

一、多线程概述

1、要认识进程得从程序开始,程序是对数据描述与操作的代码的集合;

2、进程是程序的一次动态执行过程,他对应了代码加载、执行至执行完毕的一个完整过程;

3、进程的特点是:

      (1)、进程是系统运行程序的基本单位;

      (2)、每一个进程都有自己独立的一块内存空间,一组系统资源;

      (3)、每一个进程的内部数据和状态都是完全独立的;

4、线程是进程中执行运算的最小单位,可完成一个独立的顺序控制流程

5、每个进程中至少包含一个主线程来作为这个程序运行的入口点

二、Java中实现多线程

1、Java在类和接口方面位多线程提供内置支持;

2、Java中通过Thread类将线程所必须的功能都封装了起来,常用方法如下:

      (1)、Thread():分配新的Thread对象;

      (2)、Thread( Runnable target ):分配新的Thread对象,target位run()方法被调用的对象;

      (3)、Thread( Runnable target,String name ):分配新的Thread对象,target位run方法被调用的对象,name为新线程的名字;

      (4)、void run():执行任务操作的方法;

      (5)、void start():使该线程开始执行,java虚拟机调用该线程的run()方法;

      (6)、void sleep(long millis):在指定的毫秒数内让当前正在执行的线程休眠(暂停执行);

      (7)、String getName():返回线程的名字;

              void setName():指定线程名字;

      (8)、int getPriority():返回线程的优先级;

      (9)、void setPrority(int newPriority):更改线程的优先级;

      (10)、static Thread currentThread():返回当前正在执行的线程对象的引用;

      (11)、boolean isAlive():测试线程是否处于活动状态;

      (12)、void join():等待线程终止;

      (13)、void interrupt():中断线程;

                boolean isInterrupted():判断当前线程是否是终止状态;

                boolean interrupted():清除中断状态;

      (14)、void yield():暂停当前正在执行的线程对象,并执行其他线程;

  3、主线程

      (1)、产生其他子线程的进程;

      (2)、通常它必须最后完成执行,因为它执行各种关闭操作;

package 多线程;
public class Test {
	public static void main(String[] args) {
		Thread t = Thread.currentThread();
		System.out.println("当前线程名是:"+t.getName());
		t.setName("测试线程");
		System.out.println("当前线程名是:"+t.getName());
		/**
		 * 当前线程名是:main
		 * 当前线程名是:测试线程
		 */
	}
}

4、使用线程的过程

      (1)、定义一个线程,同时指明这个线程所要执行的代码,即期望完成的功能;

      (2)、创建线程对象;

      (3)、启动线程;

      (4)、终止线程;

三、在Java中使用线程

1、在Java中创建线程类有两种方法,一种是集成Thread类,另一种是实现Runnable接口

2、继承Thread类创建线程

      使用此方法创建线程一般要经过以下步骤:

      (1)、继承Thread类;

      (2)、重写run方法,将所有需要线程执行的代码全部写在run方法中;

      (3)、创建线程对象;

      (4)、调用start方法启动线程;

package 多线程;

public class MyThread extends Thread{

	@Override
	public void run() {
		Thread.currentThread().setName("测试线程——");
		for (int i = 1; i < 11; i++) {
			System.out.println(Thread.currentThread().getName()+i);
		}
	}

	public static void main(String[] args) {
		MyThread 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值