java synchronized方法的疑惑

来源:百度知道 编辑:UC知道 时间:2024/05/20 22:26:57
class TicketsSystem
{
public static void main(String[] args)
{
SellThread st=new SellThread();
new Thread(st).start();
new Thread(st).start();
建造了这俩个线程,一个用来无限输出a,一个用来无限输出b.运行结果是1(thread-1简称)=a 1=a 1=a 1=a 2(thread-2简称)=b 2=b 2=b 2=b 1=a...
但是我分别对这俩个线程的方法加了synchronized,结果一下子变为1=a 2=b 1=a 2=b...
我感觉很奇怪因为分配给这俩个线程的时间是都不一定相同,第一个线程为什么运行完1=a就结束了运行2=b,就不会继续在1=a 1=a 1=a 吗?
就感觉为什么加了这个synchronized,线程就变的有次序了,这个不就只是不被其他线程干扰,对分配时间难道也有影响

你要把你的程序贴出来更好地分析。。

不过一般来说,
public synchronized void addition() {
a++;
}
a在被一个程序修改的时候不能被别的程序修改。。

设置线程的优先级
把第一个线程的有优先级设置大于5,默认是5