Thread:当你一个线程建几个实例,它们是各行其是相互没有接触的(run(){};里面的代码会各行其事),线程执行不是按顺序执行的,谁获得线程时间片段谁就先处理,可以看看图三
图1
图2
结果
图3
Runnable:当你连开多条线程,每条线程会替换着去执行run(){};刚刚和Thread相反;上面的代码,如果开3条线程,这里每条线程说不定会执行几次,3条线程一共输出3,2,1,也就是执行完Run(){}方法里面的条件就结束,注意是没有顺序的,有可能是2,3,1,;
Runnable的运用:一个售票站,有3个窗口,一共有100张票,如果用Thread的话,那每个窗口就会卖100张就是300张,那明显不合理;所以就要用到runnable。
实现Runnable
结果
看到结果就知道实现Runnable ,无论开多少线程去执行代码,数据都是共享的
,数据都是共享的,里面的所有变量参数,全局的和非全局的数据都是共享的
就是说无论开多少条线程,runnable中的代码都是共享的
这个在实际用途中,比如卖票,有10台卖票机,客人买票,里面的数据都是同步的(比如票数等),每台机器买票都开一条线程,如果不同步的话票数就乱了