《弟哥带你学JAVA系列》 - 第十章 多线程入门+基本概念

106 阅读1分钟

大家帮点个赞吧,谢谢

一 基本概念

线程创建和启动

现在应该有四种,还有通过线程池, callable

注:在main方法里启动其他线程后,其他线程进入就绪态,此时cpu会继续执行main还是执行其他线程都有可能

方法一:

main和r所属线程并发

方法二:略

线程方法

sleep抛出了一个异常,故调用时需要catch

结果:main把t1合并到自己的线程里,故只有t1执行完后main才开始进入循环

注:低优先级不意味没有机会执行,只是机会较小

让线程结束的较好的方法:设置一个flag,flag为true时run里面的内容执行,为false时run方法结束,还有一个shutdown函数,shutdown用于将flag设为false,当run方法结束时,线程就结束了

\

线程同步

例子:线程不同步

结果:两个都显示num为2

解决方法:

效果都为:锁定当前对象,不能同时访问同一对象被锁住的方法,但依旧可以访问未锁住的方法

注意:对于不同线程,只要传入synchronized()方法形参的对象是同一个,就能实现同步,若不是同一个对象,就不行,如在该例中,t1和t2都是同一个Testsync,也是同一个Timer,故能同步,若是在run()方法里new一个Timer,则t1 t2不能实现同步