1.什么是线程
说到线程就是说进程,因为线程不能独立进程而存在.
进程是代码在数据集合上的一次运行活动 , 是系统进行资源分配和调度的基本单位 , 线程则是进程的一个执行路径, 一个进程中至少有一个线程,进程中的多个线程共享进程的资源。
在这里我们要知道,真正执行任务的或占用CPU运行的是线程,所以说线程是CPU分配的基本单位.
我们通常写的java main函数就是一个线程,也程为主线程.
1.1线程创建的方式
三种方式:
实现Runnable接口的run方法
public static class RunableTask implements Runnable{ @Override public void run() { System.out.println("hello,我是RunableTask的线程"); } } public static void main(String[] args) { RunableTask task = new RunableTask(); new Thread(task).start(); new Thread(task).start(); }
继承Thread类并重写run的方法
public static class MyThread extends Thread{ @Override public void run() { System.out.println("hello,我是MyThread的线程"); } } public static void main(String[] args) { MyThread myThread = new MyThread(); myThread.start(); }
2.多线程
一个进程中可以有多线程,多个线程是共享进程的堆和方法区资源的.但是每个线程都有自己的程序计数器和栈区域.
多线程中的死锁:
互斥条件 ,请求并持有条件, 不可剥夺条件, 环路等待条件
2.线程安全
3.同步类型