多线程(1)
先来了解以下线程的一些基本概念:
- 1.线程是独立的执行路径。
- 2.在程序运行时,即使没有自己创建的线程,后台也会有多个线程,如主线程,gc线程等。
- 3.main()称之为主线程,位系统的入口。
- 4.在一个进程中,如果开辟了多个线程,线程的运行由调度器安排调度,但线程的先后执行顺序时不能人为干预的,调度器与操作系统紧密相关。
- 5.对同一份资源操作时,会存在资源抢夺的问题,需要加入并发控制
- 6.线程会带来额外的开销,cpu调度时间。
- 7.每个线程在自己的工作内存交互,内存控制不当会造成数据不一致。
多线程的创建
三种创建方式:
继承Thread类、实现Runnable接口、实现Callable接口。
第一种,继承Thread类
package com.Thread.lesson01; /** * 创建线程方式-:继承Thread类,重写run()方法,调用start来执行线程 * 注意:线程开启不一定立即执行,由cpu调度执行 */ public class TestThread1 extends Thread{ @Override public void run() { //run方法线程体 for (int i = 0;i<10;i++){ System.out.println("run方法的"); } } public static void main(String[] args) { //main线程,主线程 //创建一个线程对象 TestThread1 thread1 = new TestThread1(); //调用start方法开启线程 thread1.start(); for (int i = 0;i < 200;i++){ System.out.println("main方法的"); } } }
第二种,实现Runnable接口
package com.Thread.lesson01; public class TestThread2 implements Runnable { @Override public void run() { //run方法线程体 for (int i = 0;i<10;i++){ System.out.println("run线程"); } } public static void main(String[] args) { //创建runnable接口的实现类对象 TestThread2 thread2 = new TestThread2(); //创建线程对象,通过线程对象开启我们的线程 // Thread thread = new Thread(); // thread.start(); //可以合并起来 new Thread(thread2).start(); } }
浙公网安备 33010602011771号