大家帮点个赞吧,谢谢
一 基本概念
线程创建和启动
现在应该有四种,还有通过线程池, 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不能实现同步