运行如下程序,发现线程1,2,3中每次run函数中的输出都是随机的,说明三个线程在同时运行
class ThreadDemo extends Thread {
private Thread t;
private String threadname;
ThreadDemo(String name){
threadname = name;
System.out.println("创建线程"+threadname);
}
public void run(){
for(int i=0;i<10;i++)
{
System.out.println("running"+threadname+" "+i);
}
}
public void start(){
System.out.println("starting"+ threadname);
if(t==null){
t=new Thread(this,threadname);
t.start();
}
}
}
class test{
public static void main(String[] args) {
ThreadDemo t1=new ThreadDemo("t1");
ThreadDemo t2=new ThreadDemo("t2");
ThreadDemo t3=new ThreadDemo("t3");
t1.start();
t2.start();
t3.start();
}
}

继承thread方法和实现runnable接口的区别
实现runable接口更优秀


状态转换和同步锁
状态转换

同步锁:
使用sychronized修饰一段代码,一旦有线程1访问这段代码,则线程2必须等线程1访问结束再访问
代码见点击链接
wai/notify方法
wait线程停下进入等待队列,
比如

输出情况

noitfy()让线程继续执行(不太知道怎么用)

本文通过一个Java程序实例展示了线程并发执行时的随机输出现象,说明了多线程并行运行的特点。同时,介绍了同步锁的概念,使用`synchronized`关键字确保线程安全,以及wait和notify方法在等待唤醒线程中的作用。讨论了线程的状态转换,并探讨了在多线程编程中如何实现资源的协调和管理。
4867

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



