1.线程的基本概念(一个进程不同的执行路径)(一个时间点一个 cpu只能进行一个线程) 锁和时间片
- 线程是一个程序内部的顺序控制流。
- 线程和进程的区别
- 每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销。
- 线程可以看成是轻量级的进程,同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换的开销小。
- 多进程:在操作系统中能同时运行多个任务(程序)。
- 多线程:在同一应用程序中有多个顺序流同时执行。
*java的线程是通过java.lang.Thread类来实现的。
*VM启动时会有一个由主方法(public static void main(){} )所定义的线程。
*可以通过创建Thread的实例来创建新的线程。
*每个线程都是通过某个特定Thread对象所对应的方法run()来完成其操作的,方法run()称为线程体。
*通过调用Thread类的start()方法来启动一个线程。

//能用接口就不要用继承
public class TestThread1 {
public static void main(String[] args) {
Runner1 r = new Runner1();
Thread t = new Thread(r);
t.start();//线程启动 (必须)
for (int i = 0; i < 100; i++) {
System.out.println("???????" + i);
}
}
}
class Runner1 implements Runnable {
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println("Runner1" + i);
}
}
}


死锁

1、 无论synchronized关键字加在方法上还是对象上,如果它作用的对象是非静态的,则它取得的锁是对象;如果synchronized作用的对象是一个静态方法或一个类,则它取得的锁是对类,该类所有的对象同一把锁。
2、每个对象只有一个锁(lock)与之相关联,谁拿到这个锁谁就可以运行它所控制的那段代码。
本文介绍了Java中的线程基本概念,包括进程与线程的区别,线程的创建与运行,以及如何通过实现Runnable接口创建线程。此外,还讨论了线程同步中的锁机制,并举例说明了死锁的概念,强调了避免死锁的重要性。通过实例展示了如何在Java中使用synchronized关键字进行同步控制。
801

被折叠的 条评论
为什么被折叠?



