1、概述
1.1 Java中使用Thread类表示线程;
所有的线程对象必须是Thread类 或 其子类的实例;
每条线程的作用:完成一定的任务;
Java中使用run方法来封装线程执行体;
1.2 默认情况下,主线程的名字是main;
创建的多条线程的名字是:Thread-0、Thread-1、Thread-2...;
1.3 创建、启动线程:
1.3.1 继承Thread类
创建继承Thread类子类--->重写run方法--->创建子类实例--->子类实例调用start方法启动线程
Thread.currentThread() 返回当前线程对象
getName() 返回当前线程的名字
setName() 给当前线程设置名字
存在的问题:
多个线程之间无法共享变量;
package com.an; public class MyThread extends Thread{ private int i; @Override public void run() { for (;i<20;i++){ System.out.println(Thread.currentThread().getName()+i); } } public static void main(String[] args){ for (int i=0;i<30;i++){ System.out.println(Thread.currentThread().getName()+i); if (i==15){ Thread thread=new MyThread(); thread.setName("test-one"); thread.start(); Thread thread2=new MyThread(); thread2.setName("test-two"); thread2.start(); } } } }
1.3.2 实现Runnable接口
创建实现Runnable接口的实现类--->重写run方法--->以实现类的实例为target,创建Thread的实例,Thread类的实例才是真正的线程对象--->Thread实例调用start方法
多线程之间可以共享同一个target
package com.an; public class ThreadTarget implements Runnable { //多线程共享资源i private int i; public void run() { for (;i<20;i++){ System.out.println(Thread.currentThread().getName()+"="+i); } } public static void main(String[] args){ for (int i=0;i<30;i++){ System.out.println(Thread.currentThread().getName()+"="+i); if (i==15){ ThreadTarget threadTarget=new ThreadTarget(); new Thread(threadTarget,"test-one").start(); new Thread(threadTarget,"test-two").start(); } } } }