线程的概念
多进程:
在操作系统中能(同时)运行多个任务(程序)。
多线程:
在同一个应用程序中有多个顺序流(同时执行)。
线程的执行过程如下图
如图所示多线程是在cpu之中两个线程之间交互执行。
代码实现
创建线程的方法
方式1:
定义一个线程类,继承Thread并重写其中的方法run(),方法run(),称为线程体;
首先我们自定义一个线程类代码如下:
public class FirstThread extends Thread {
// 复写run()方法
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println("FirstThread-->" + i);
}
}
}
我们我们需要设置该线程继承自Thread。
主函数:
public class FirstThreadDemo {
public static void main(String[] args) {
//生成线程对象
FirstThread firstThread = new FirstThread();
//启动线程
firstThread.start();
for(int i = 0;i<100;i++){
System.out.println("main-->"+i);
}
}
}
特别提示启动线程是调用start()方法!!!
这里我们同线程对象一样设置一条打印语句运行看到结果如下:
两个线程是交互进行的。
方式2
1、我们首先自定一个类实现接口Runnable并复写其run()方法,代码如下:
public class RunnableImpl implements Runnable {
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println("Runnable-->" + i);
}
}
}
2、在主函数中我们首先将RunnableImpl类实例化,让后将其实例化的对象作为参数传递给Thread对象,这样我们就简单完成了线程的第二种实现方式,代码如下:
public class RunnableDemo {
public static void main(String[] args) {
// 生成RunnableImpl接口的实现类对象
RunnableImpl impl = new RunnableImpl();
// 生成Thread对象并且将RunnableImpl对象作为对象传递进去
Thread thread = new Thread(impl);
// 启动线程
thread.start();
for (int i = 0; i < 100; i++) {
System.out.println("main-->" + i);
}
}
}
运行结果如下:
线程的简单控制方法:
通多查询API我们得到四个方法的具体描述:
static void sleep(long millis)
在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)。
我们可以在线程体中设置让该线程认为的休眠2000毫秒。
static void yield()
暂停当前正在执行的线程对象,并执行其他线程。
int getPriority()
返回线程的优先级。
我们可以通过该方法可以得到线程默认优先级为5
thread.setPriority(Thread.MAX_PRIORITY);返回10,表示最高优先级
thread.setPriority(Thread.MIN_PRIORITY);返回1,表示最高低先级
void setPriority(int newPriority)
更改线程的优先级。
synchronized()方法:
上面两端代码表示我们使用同一个线程体,生成两个线程。为了保证数据安全使用synchronized()方法的例子。