java基础知识回顾之java Thread类学习(三)--java线程实现常见的两种方式实现好处:
总结:实现Runnable接口比继承Thread类更有优势:
1.因为java只能单继承,实现Runnable接口可以避免单继承的局限性
2.继承Thread类,多个线程不能处理或者共享同一个资源,但是实现Runnable接口可以处理同一个资源。
下面我们做个测试:验证下。车站的售票系统售票的例子,车站的各个售票口相当于各个线程,我们先使用第一种方法几继承Thread类的方式实现:
代码如下:
package com.lp.ecjtu.Thread;
/**
*
* @author Administrator
* 车站的售票系统售票的例子,车站的各个售票口相当于各个线程。
*
*/
public class TicketsThread extends Thread{
//用静态变量存放这100张票,这样就不会卖重复
private int tickets = 100;
public void run(){
while(true){
if(tickets > 0){
System.out.println(Thread.currentThread().getName()+"***sale***"+(--tickets));
}
}
}
/**
* @param args
*/
public static void main(String[] args) {
// 不合理的买票程序,因为,不同线程都可以卖同一张票,
//现实生活中不是这样的,窗口1买完第99张票,窗口2不可以卖了。
TicketsThread t1 = new TicketsThread();
TicketsThread t2 = new TicketsThread();
TicketsThread t3 = new TicketsThread();
t1.start();
t2.start();
t3.start();
} }
代码的原理图如下:
aaarticlea/png;base64,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" alt="" width="811" height="413" />
总结:不合理的卖票方法,不同线程都可以卖同一张票,现实生活中不是这样的,窗口1卖完99号票,窗口2就不可以再卖这张票了。
怎么解决呢?使用实现Runnable接口的方法就可以解决,代码如下:
public class TicketsRunnable implements Runnable {
private int ticket=100;
//Object obj = new Object();
public TicketsRunnable(){
System.out.println("*****************************");
}
@Override
public void run() {
// TODO Auto-generated method stub while(true){
//synchronized(obj){ //同步代码块
if(ticket > 0){//当线程0被调起的时候,当执行到这条判断语句的时候,线程1被调起抢了CPU资源,线程0进入冻结状态。
try {
Thread.sleep(100);//中断当前活跃的线程,或者执行的线程
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"正在卖票"+ticket--);
//System.out.println(Thread.currentThread().getId());
//System.out.println(Thread.currentThread().getName());
}
//} }
} /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
TicketsRunnable runna = new TicketsRunnable();
Thread t1 = new Thread(runna);
Thread t2 = new Thread(runna);
Thread t3 = new Thread(runna);
t1.start();
t2.start();
t3.start();
} }
上面代码简单内存图理解如下:
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAwgAAAHWCAIAAABczDk2AAAgAElEQVR4nO3d25LjONKsUT26Xmvu/jfTvqgubRYPIMUDEEAst8/aspGUGHQwIB8qG/P6EBEREdHn8/l8Xq0LICIiIooiwYiIiIjoPwlGRERERP9JMCIiIiL6T4IRERER0X8SjIiIiIj+00ow+r//+7/VQ40bN27ceHfj79cL6IjmfeSJERHRUFp8zPwP6IhlTqoswYiIaARJQhiS+glJMCIi6lvyEDJQLR6dPEfz7yAxPPfe6ERD6m+ztP/QAupQ4QPifDBq7g4GRjAiKkskQmYejUeCESIiGBFtSSQC/vBQPBKMEBHBiGhV1l5gxu2fFyf3MdKcq7xer9eaM6uDKPB+vQLuB2PceNtxCy+wylY2qrqPkf5cpRCMvmpeZBd4YkQ0k1UXKHDjp4ZgdCe7T4xko4MIRkRf+aMi4Ah3/cmRYHQnR75KE4yOIBgR/ZHFFviJ6x8fgtGdfIPRLP0IQ78iGBF9rLTAKS5+gghGN/Da0PSA5ZHNy46MYET0sdICpxCMArHMQ1tRCWUEIyLLLHCaKx8igtGd+M/170IwouSyxgIXOf05Yh+jO9l6MrT8kyNRqczbPkbGE49bYIFb2MpG9jGqROFbM1+o/YonRpRWVlfgRk58mghGtzHNPcu/tp4d2bza4AhGlFZWV+BGBKNmfPPQ1t8YzaJS84KDIxhRTllagdv59QNFMLqHcjA6cgCmVAhG79cLKPP0Tbh6WzbvPmAwfu1lwegGXgeeBr3+qnm1XVDhM8k9jDL1s5F7EniIn3pZMLqT3WDUvMJeEIzQnD93SM1s5J4EHkIwasZW+nkt/n9ChKQyghGa871D6mQjNyTwKMcb2T5Gd7IMRrOR778KRmXez+9j5B5GmekdslxSb78/3ZDAo0y72D5G9VjGoK1jBKMybZ8YlWdnOcXL46cJeKqt+6G54ae5142y+cv/1bF1wGuh5WHlYz7/BqPPw/ekFRWowMEuFozuZPYBUD6s64/Dp2kbjD7F7z1Xf7X8SC4fvDxsNzHE5F43VrXqz5ZdR9w76PDyDnnutrSiAhUQjNAx9YPRkY/nz+KhyOzTffpusx8+a5/HhcMKBx9kmRiWMeLiOzzkxtbFnshAu29SYHWVe+jOtKICFRCM0DH1g9GM8gdz4aFF4cHGLDes/uqzEYx+zTSf7Zxx/H3K73CXG1tVbb1P2b3CwbOad9/nvWHU++6bc+tEAG7nSP8KRojI7Z89v97Dq+lh9YN/+qvyywtnWb62cK6DrH7Y//Q+5Xe40Y1Zalkdmb3t6kuWxx+c3NUjC3fIvfen5RSohmCEXokZjD7bjxxmx8yiw5EjZ6e4EmgKx//0Jqs1FJLQOTdmWadw6q0aVt+h4MDxYFSmzq0I4EYEI/RKk2C0+sm9/Nxd/SReflSXP+Y/i8QwO/jgh/fy5YXjr7/DssK73Fi+avWMW1NTeIcr3hYQjIAeORmM7GOE5rxb72NUjjKzwwofvVuf4svDCu9ZKGm1qtXjC5/9p4PRXW7sXvtWPVvXeDw/7ZqzxdbyeuL+tJwC1fjTufYxQn/c+D/Hz93Dx2PELNysfrQXPr+n7zn9FL83GJU/+H99h9nPF9341fkjieeg/wdLWuWuW9RaClRmt3kFI0QkZjBahoCtj/+DUWD1g3yWlqY/r36iH8lw5TBx5B2WNTzhxrTaI5OyPMuRiCMYAZkRjNAl9YPR6tOI42FimRK23nP2quZWX+eiG6vOrI6X/fz+vDuDq0e2ukXfQ9wDQEfsNq9gdKfXXdPcwJmZ5+5M9zDqIBgNzzIuv4pPNNELglFlr9uXMUbxghGCIxgNz2ow+maj5uXhNIJRZa/blzFG8YIRgiMYDc8s/ax+G4seEYwqe92+jDGKF4wQHMFoeJbBaEvNS8VPnAlG9jG64HX7MsYo/t16HyOgzNba6j4chum3ZrMAJAx1ze7niydGd3rdvIZhivfECMHxxGhUlk+Dlk+GBKOu8VVaZa/blzFG8YIRgiMYDc83/Sz/4Hr2K/SFYFTZ6/ZljFG8YITgCEbDM8tD/rpoGASjyl63L2OM4gUjBEcwGp7lH19v/Qp9IRhV9rp9GWMULxghOILR8AhGoyIYVfa6fRljFC8YITiC0fAsg5Fv08ZAMKrsdfsyxiheMEJwBKPhmUUfT4yG4Uwwso/RBa/blzFG8W/7GCE2W2ur+3AAVh8FCUbDsPv54onRnV43r2GY4j0xQnA8MRqVrS/IBKNh8FVaZa/blzFG8YIRgiMYZWPrb4yEpO4QjCp73b6MMYoXjBAcwSgbAtAwCEaVvW5fxhjFC0YIjmCEJ3i/Xrs0L7J3BKPKXrcvY4ziBSMERzDCLZwIPXLSdc/LXSkY3et1+zLGKL5OMAKucNd92LzdUJl/76JY75aB3eYVjO71un0ZYxR/16dOZvGwC0VrPTxHhfgiIR10qdyV9jG61+v2ZYxR/Pv5fYzGHl92fsw6jUdrPTxB/bAiHpXNsY9RPa+b1zBM8Z52XBH3OlK01sONNH9+07yAmPgqrbLX7ct4vV6f3//L0iDF/1sP0fiK1nq4hWhxJFo9zd0od6VgdK/X+4fNIsvrr26pYfo+P71ntAkVjCiJorUerhN2TsMW1sKHkgSje73eP2wru9ySjQSjtOJYp4rWerhC/Acz8SusY0K5KwWje73eP2zrEdF3ZPbD8qux78jsrQrveVfxdc2ko2JXv4rWejhNR1PZUamPXX5JgtG9Xu8fthpfVp/0bIWeQlTaPdfF4uuaSYfEq64VrfVwgh4fw/RY843XXu5Kweher/cP2wor5VgjGBENqWith1/pega7Lv7aVZe08use9zF6B9j6UzC618xo+81EG99StDqNl8ejtR6OM8ZDlzGu4tdLTrGP0beevoLR1jdoR44cPhiduzOTiD/DKFrr4SCDTdxgl3PgYksSjO6vYZfZHw8V/sZo+arvwbsvOZ6K2vq2XQ+tizkjKVrr4QhDztqQF7V9pSUJRvfX0BDBaHhxZjBFaz3sMvCUDXxpi8ssSTC6v4a2bH2t1kXx/9ZDNL6itR7KDD9fw1/gRzBqUkOPRCteMKIkitZ6KJBksoa/TMGoQQ09Eq14wWgqbgysaK2HLVLN1NgXKxg1qKFHohUvCnzFirEVrfWwSsJpGviSzwSjTvcxaj6X0TzpuvjdfSaSjPNh+PForYclaedo1Au3j1GDGnokWvEek1ASRWs9zEg+QUNevq/SGtTQI9GKF4woiaK1HqaYnSFNEIwa1NAj0YrPHIwyX3tCRWs9fDE1o1ohGDWooUeiFZ82HKS98LSK1nr4g3kZ2BDBqEENPRKt+Jz5IOdVJ1e01sMn3noYhGFsEYwa1NAj0YoXESiJorUezMjw5ghGDWrokWjFC0aURNFaLzmmI4NF9jFqUEOPRCs+z/493xYNUo/xyuPRWi85piODRfYxalBDj0QrPskToySXSQVFa73MmIskRvkqrUENPRKt+AyJIcM10q6itV5aTEQeuwSjBjX0SLTihQZKomitlxOzkMo0wahBDR3xfr0AYHjGW72b069pb8Gofg0d0WPNAPAT5YXOMviQsWERjBrU0BE91gwAP1FY6KyBz3kbFsGoQQ3neK2pcPBdNQPA8Dy0bqNHA9/2Mapfwzlei5fPRl5F7R7zaPFPmBltvxnjxp8Yj9Z6qWB+Tht3P188Mbq/hl1Ww0o5GH2PX33VNBhtnfGu4iuaSTS+orVeHjif1swzT4x6bOaOgtEs7kx/3n3MsxqAtn7eOumV4uua2b3GuAp6VNFaLw+cT2umYNSghuPs5pXZwbvflAlGcTTAJVAFRWu9JLA9s6UZg1FNTt8WszRzJPR8PDHqR73XT9UUrfUywPPkxiYNRpVPuvqvR5jlld348vr7F0XTzCQYEfWraK2XAZ4nN1YwqnHS1X89wjIYbT0rmh0wfblgRNSvorXe8DCcvUmDUTVO3BBHcszWb6eRaOtrtS0dNDAIPQajHmum5orWesPDcPaeCUb2MbpYwy4Hw8pWMEryxCjafjPl8WWnxazTeLTxaK03Ntxm8sc+Rk1quEghNp17GlSz+FvN7EZ9VUuhFK31xobbTP7k/CqteQ09Eq14UYOSKFrrDQyrWT0pryTB6P4aeiRa8YIRJVG01hsYVrN6Ul5JgtH9NfRItOLjB6P4FVIXitZ6o8Jnhv9bW0mC0f019Ei04oPHjuDlUUeK1nqjwmeG/1tbSYLR/TX0SLTiIyePyLVRd4rWekPCZLYvCitJMLq/hh6JVrzwQUkUrfWGhMlsXxRW0sqv7WN0sYYeiVZ8d/sYGTd+bjxa640Hh5m/rMo+RrVr6JFoxUd7YhStHhpG0VpvPDjM/LWqShKM7q+hR6IVHyqIhCqGBlO01hsPDjN/raqSBKP7a+iRaMXHySJxKqEhFa31BoO9zQk4BYJRgxp6JFrx4gglUbTWGwz2NifgFAhGDWrokWjFC0aURNFabyR4G4RoEyEYNaihR6IVLxhREkVrvZHgbRCiTYRg1KCGHolWfMNg9H69xDKqpmitNwyMDUWo6bCPUYMaeiRa8a32MbJ/kvHK49FabxgYG4pQ02EfowY19Ei04j2zoSSK1npjwNWAxJkUX6U1qKFHohUvGFESRWu9MeBqQOJMimBUtYauaT6JiwklGl/RWm8AWBqWIFMjGKFLqgUjf2pNbWXJemb1aF8GlgSZGsEIXVInrIhE1FyWrGdWj/ZlYEmQqRGM0CUiCyWRJeuBpaN9GVu8opa3LKxc6p/fnricCBMkGKFLBCNKIkvWA0tHg/O+/tVnIzTsJonCAbP3v73+nyo5fkVBJmhRQ0n2MUJE3vYTMp5j3JJ1+9LR8OxXcs/uAVfiyInKxw5G9jFCfzz0xMifWlM0WbIeWDp+e8nqk5jZSOGH2Vstf159jLT62/K/br35bHB5OQcvsHDJq+OrV/3EBN3O7qeAYISIPBFfRCIKKEvW3evGz69azRZbI78Go9lhW+9WOHXhzX8tfrXs8qt2r2jLitun6UYEI3SJEENJZMm6e934+VXlhy7LlLCVD7beanbA6mOb2Yl2Dz54xkIwKp9314qtq35umm5EMEKXCEaURJasu9eNn191/KHILcHo8286KbzDd6TwqnPB6PjIwQorTNONCEboEsGIksiSdeuiceaFxx+xrL7k+Fst3+1IJvu1queC0V1PjK5M1i0IRuiSW4LR259aU3hZsm5dNM68sPxNU/mwX99qNWcsT7T6q0LG2j3FkVdtne6cFQ9N1i0IRuiS64FGJKIuZMm6ddFoX0YGMgYj+xihOW/7GBnPMW7JumvFaF5DKra+VjtOwynb/XzxxAgR8byHksiSdd+K0b4MHKdtMCp3pWCEiAhGlESWrPtWjPZl4DiCUT2LoxWGc5wLRuIUdSdL1k3LRfsy8CutJk4wQpf8GnHe/gM06lOWrJuWi/Zl4FcEo0r+RisM55ByKIksWTctF+3LwK8IRpX8jVYYziEYURJZsu5YK9qXgXM0mT7BCF0iGFESWbLuWCval4FzdBOM7GOE5hzZx2h2c0fbn8a48SPjlqzra0XzGnCaVsHIPkboj3Ki96fWNIwsWZcXivZl4Ar1J9FXaegSuYeSyJJ1eaFoXwauIBg97my0wnAOwYiSyJJ1eaFoXwauIBg97my0wnAOwYiSyJJ1eaFoXwauIBg97my0wnCO5Y0rKtGQsmRdXijal4ErCEaPOxutMJxjeuP6U2saWJasywtF+zJwBcHocWejFYZzSEKURJasa6tE+zJwncpTaR8jdMmRfYyMGx9g3JJ1ZZVoXgNuoX4wso8R+sMTI0oiS9a1VaJ9GbhOB0+MemxmwWgwBCNKIkvWtVWifRm4jmD0rK3RCsM5BCNKIkvWtVWifRm4jmD0rK0NC/vzH0/1RfOJK04o0fiK3IaR4dtg1JxQwWjMeR2+YMGIkihyG0aGb4MhGD3oqWA0RsGCESVR5DaMDN8GQzB60FPBaIyCBSNKoshtGBm+DUb0YGQfo/jzOnzBu/tMGDc+xnjkNowM3wajcjCyj9GA8zp8wZ4YURJFbsPI8G0woj8x6rGZBaPBChaMKIkit2FYmDYk1aZVMBpwUjMULBhREkVuw7AwbUgEo6cMFYzGKFgwoiSK3IZhYdqQCEZPGSoYjVGwYERJFLkNw8K0IRGMnjJUMBqjYMGIkihyG4aFaUMiGD1lqGA0RsGCESVR5DaMCccGps7k2sdotBlNUrB9jIwnGY/chjHh2MBUC0b2MRpqRpMU7IkRJVHkNowJxwYm7hOjHptZMBqsYMGIkihyG8aEYwMjGD3ipmA0RsGCESVR5DaMCccGRjB6xE3BaIyCBSNKoshtGBOODYxg9IibgtEYBQtGlESR2zAmHBsYwegRNwWjMQoWjCiJIrdhQNg1PBWmWDAaajrzFCwYURJFbsOAsGt4ggYj+xiFnc48BdvHyHiS8chtGBB2DU+dYGQfo3GmM0/BnhhREkVuw4Cwa3iCPjHqsZkFoy+v1+v7zy4K3q6NaHxFbsOAsGt4BKP7rYwfjGaR5fVXt9QwfZ/d94w2iYvaiMZX5DYMCLuGRzC638q+gtFPOebKm/9a8Pv1AoBHeW6ZRb9UmOK3YBRtOl9/tRxf/WH6z9n47K0K7/lrwdHmF8BgCEZYRTC638ouglF5cBp0VkNPISodOdeRgqPNL4DBEIywimB0v5U9BqOt+LKalj61ghEAPMpzyyz6pcIUv+1jFG06X4s/vj5y5PLn8sjum7f16oiZ0fabMW78ifHIbRgQdg1PnWBkH6NY07kVd5aDyYPRuTuTqC9FbsOAsGt4gj4x6rGZOwpGn8kfD73+1fe3sx+mr5q+dvqr5UvKqaitV8fMJBpfkdswIOwaHsHofiu7CEbPIRgR9aXIbRgQdg2PYHS/lcmD0cfO10RdKXIbBoRdwyMY3W+lYDRGwYIRJVHkNgwIu4ZHMLrfSsFojIIFI0qiyG0YEHYNj2B0v5WC0RgFC0aURJHbMBq8SsLTE30mGPW+j1FNas7lc6YF5G0fI+M5xiO3YTR4lYQKwSjdPkbVahOMHq6NaHxFbsNo8CoJEZ8Y9djMgtH1+kMhGFESRW7DaPAqCYLRzT76Ku2EaQERjCiJIrdhNHiVBMHoZh/98fUYBQtGlESR2zAavEqCYHSzj4LRGAULRpREkdswGrxKgmB0s4+C0RgFC0aURJHbMBq8SoJgdLOPgtEYBQtGlESR2zAavEpCxGDU+z5GzWvohcgF28fIeJLxyG0YDV4lwT5GN/soGI1RsCdGlESR2zAavEpCxCdGPTazYDRYwYIRJVHkNowGr5IgGN3so2A0RsGCESVR5DaMBq+SIBjd7KNgNEbBNXfpBGoSfC2NDK+S8PREL9tQMOp1LlMV/PcjpH0lwI0ss5H7/Cf3mtdwmtdEf/51+qvlMatqfhV1EIxu9lEwGqNgwQhD8ueunq7L7vNf3eudQjAqH5YHwehmH/sNRj/974NbuiXaJM5qi1wecI5/V6qIa2lkQnk1W4SXi/bWMj5LPFvvk/Zx0SdmMLKPUZO53Oqf6b/u9sxPTRVtEme1RS4POMf0rv6zOrvPz7nXlmUGmv28OjJdjZeHzd6qnJ/GpkIwarmPUXkuyzfTd3x5Vy0P6ysYrV5FORjN2mnLty3DBw5GhXvs4K8u3ntb6+PxerbT7MrpDrL6wt1bbjb+dD2/VlWo5OCbnCh7errVuS5P36yS9+Jf34HbMCBx7Npq/K1bZXmLbjXpvUtBd1SY4nfzr9K27p6tXy2Xm933+XQVjArttNsJu25sNc/qeJwlZrW2ZXk/LRmri1HZtHP3XvkOL6s8a+VfFShc+/RXBQ9n73CujN13WDVkq/jVCn864ArLqk7cdZ+1povchgGJY9fWzbB1q8xGjixiOakwxe/6weinD4Plujm7RVYX1uU99K2nYducOPVPzXDc1YMnirPErNZ2pbzy3XLLvXfwPr8ys4UJPX3ts8sv3znfY85d1xGTy+WVXfrJydXLXD1g9c3Ldm2dd/k+7946MRpxvNq6r5Y38LKPVg/7HnzwXhqVClP8rh+MltNcGFy9Y76/mt1GR5abhm3z66mnJpS15Vv5591ZiLPErNZ2urylSwUPr997u/6X57Qwa+Vfnbv2ZbWrxSz/eb2eqZ8nrD5uWuEl5cZZHVlWXrgHZgcsj3xvlL01jrBG/XovrR7wa0NloMIUv8MGo61FqrB4HbGyYdv8dOotW468anWxLr/D6nicJWa1thPllT/5Zu4tDzt37+2+pPA5Ov3X1Uxw8JY4eO2z4wv1zNbuZWE/zUi5tkJhW2+1fMNVH8rOL38ujyxNLtS2Zdd728DCrxDQpV/vpa0Dlnfy8dtpSCpM8TtmMPr8e1tsTfx3ZPcW+dbTsG1u8aTcBrPx3Q4sj8dZYlZrWy3vp8Wizr1X9n/15bM3KcxjoYayA4Vr/7Wk8gUWzJ++59abLA84forC9R6x5cgUzEaOOF/mvb8v9s/XnoogFq22zO7IZ+PhYvmY5QFjU2GK302C0e7K+70bynfA1npdsLJh2xw89fFbfHnk1KWyY0dW8CBLzJaZ18tbveq77r2C1VuGl6d19VzH75Yj114uYOvs5es6eLHTa9y6Y1ff8KDPuxe1OsW7UzA70fKw3SJ/mrV34JYMQr8W7d7ns8HVRmh+FRWoMMXvE8Ho3n2Mtpan2XhhYZq+ZGu5+dbTsG0Onvr4urm11s8+DLbW+t1ZiLzEvJ8MRvfeez/Vs1XS1llOn67wwuWb7xpSeMOyJyfOtfqGu4YcuYTVWS6UsfWGz30+RW7JILBoeOoEo5b7GH32FujVlaiwBm29W0fB6IhjhU/QVbUt+CEzHwpGUyeXR5649wof6lvzNZu4wqfy6ck9HVa+hS3LK9yTx8+1ZfjS+a2qVu/82QFbPmz9qjAFqwecmOUjvAO3ZBBYNDwVpvh94olRhWBUWNQ+B5angpUN26a7jo1c8PuXYLR1V1S4944Pnhgv/+qcJ7MDVj+5p4PLBFMw89dLLp9l9bdlw3eLWZ398shueVs1nJi7yC0ZBBYNz5jBaON/Nf1/LQ8ujEyX78L7fOtp2DbddWzkgt+LYPTTffV9SeEUF++9rZOunrpQ5Fad5ZfsUn7PIxe+dGDX0vIZt+Zr+eaFM+7Oe/lcJ2ycvsOqUeUDfjr7O3BLBoFFw1Nhit/NnxhVtrJhYdE86brgt/9CB/lwz7MIgtH9VgpGYxQsGCEh7nkWQTC630rBaIyCBSMkxD3PIghG91spGI1RsGCEhLjnWYSgwejefYwqWykYjVGwYISEuOdZhDrBqPE+RpWtFIzGKFgwQkLc8yxC0CdGglHY6cxTsGCEhLjnuZScOpMrGI02o0kKFoyQEPc8l5IjGD3ipmA0RsGCERLinudScgSjR9wUjMYoWDBCQtzzXEqOYPSIm4LRGAULRkiIe55LyRGMHnFTMBqjYMEICXHPcyk5cYORfYwiz2iSggUjJMQ9z6XkVAtG9jEaakaTFCwYISHueUZlptq0+iptwEnNULBghIS45xmVGcHoKUPbBqPuaD5xZTOblwHUxD3PqMwIRk8ZGq0wnEMwQkLc84zKjGD0lKHRCsM5BCMkxD3PqMwIRk8ZGq0wnEMwQkLc87xKS80JFYzQJYIREuKe51Vaogcj+xihOYIREuKe51VaKgcj+xihPwQjJMQ9z6u0RH9iJBihOYIREuKe51VaBKMHPY1WGM4hGCEh7nlepUUwetDTaIXhHIIREuKeZ1dOKk+lYIQuEYyQEPc8u3IiGD1ra7TCcA7BCAlxz7MrJ4LRs7ZGKwznuPJ/AAf0S/PW6wh2DUPlqXzbxwg98t7bZ8K48THGLVlXVonmNeAW6gcj+xihP3YTPdEYsmRdXijal4Er1J/EM0+MemxmwWgwBCNKIkvW5YWifRm4gmD0uLPRCsM5BCNKIkvW5YWifRm4gmD0uLPRCsM5BCNKIkvW5YWifRm4gmD0uLPRCsM5BCNKIkvW5YWifRm4gmD0uLPRCsM5BCNKIkvW5YWifRm4gmD0uLPRCsM5BCNKIkvWHWtF+zJwjibTZx8jdIl9jIwnGbdkXV8rmteA07QKRvYxQn94YkRJZMm6Y61oXwbO0c0Tox6bWTAaDMGIksiSddNy0b4M/EqriROM0CWCESWRJeum5aJ9GfgVwaiSv9EKwzkEI0oiS9ZNy0X7MvArglElf6MVhnMIRpRElqz7Voz2ZeA4DadMMEKXCEaURJas+1aM9mXgOIJRPYujFYZzCEaURJas+1aM9mXgOJ0FI/sYoTn2MTKeZNySdeOi0bwGHKTtZNnHCF3iiRElkSXr1kWjfRk4QvNgVO5KwQgREYwoiSxZty4a7cvAEQSjqi5HKwznEIwoiSxZd68b7ctAmebTJBg9ft5haD6JiwklGl/RWq9rmNkFzadJMBp8gke9EMGIkiha63UNM7ug+TQJRoNP8KgXIhhREkVrvd7hZ3AiTJBgNP4cD3khghElUbTW6x1+BifCBJ0JRvYx6muOh7yQt32MjOcYj9Z6vcPP4ESYoN3PF0+Mup/jIS/EEyNKomit1zv8DE6ECfJV2vhzPOSFCEaURNFabwBYGpYgUyMYpZjm8S5EMKIkitZ6A8DSsASZGsEoxTSPdyGCESVRtNYbAJaGJcjUCEYppnm8CxGMKImitd4YcDUgcSZFMMoy04NdiGBESRSt9caAqwGJMymCUZaZHuxCBCNKomitNwyMDUWo6bCPUaLJHulC7GNkPMl4tNYbBsaGItR02Mco0WSPdCGeGFESRWu9keBtEKJNhK/Scs33MBciGFESRWu9keBtEKJNhGCUa76HuRDBiJIoWusNBnubE3AKBKNK5+2daBciGFESRWu9wWBvcwJOgWBU6by9E+1CBKecVToAAA5ISURBVCNKomitNx4cZv5aVSUJRvect3eiXYhgREkUrfXGg8PMX6uqJMHonvP2TrQLEYwoiaK13nhwmPlrVZVkH6N7zts70S7EPkbGk4xHa70hYTLbZ4XZx6jGeXsn2oV4YkRJFK31hoTJbF8UVpJgdM95Y/J6vb7/7OtCBCNKomitNyp8Zvi/tZUkGN1z3jLLaLIVVl6v15Ec8+tJd98z5IQSja9orTcqfGb4v7WVJBjdc94ys1xSSD+C0aQeovEVrfUGhtWsnpRXkmB0z3nLvP5qOvLTiaZfii3f5zXR1vuXzxhyQonGV7TWGxhWs3pSXkmC0T3nLfNrTFl9h9XQU4hKP50x5IQSja9orTc23GbyRzCqdt4ytwSjws+CEVGnitZ6Y8NtJn/OBaOR9jF6v17VKJR3PKZs/Y1RwmAUbb8Z48afGI/WesPDcPbufr4M/sSoWp2C0QN+Eo2vaK03PAxnb/av0oIEo8/ij4S2AlDh5ct3+77JamzaylLn6q+MYERJFK31MsDz5MYKRiG+SmuCYEQUX9FaLwM8T25s9mBU7bwx2fpabfdCagZKALjCeEt3j3Rk6VswqnPe3nkvglHzkgBgl9OLlVUuwiy0q1Ywev68vSMYAegRwSgCfZkpGFU6b+8sgxEAdIEFvC3d2fhOvo9RtfP2TrQLedvHyHiO8Witlw3+JzRw9/PFE6N7zts70S5kN9ETjaForZcN/ic08MwTox6bWTAa7EIEI0qiaK2XEFOQzTrBqNJ5eyfahQhGlETRWi8nZiGVaYJRpfP2TrQLEYwoiaK1Xk7MQirTBKNK5+2daBciGFESRWu9tJiIPHYJRpXO2zvRLkQwoiSK1nqZMRdJjBKMKp23d6JdiGBESRSt9ZJjOjJYZB+jSuftnWgXYh8j40nGo7VeckxHBovsY1TpvL0T7UI8MaIkitZ6MCPDm+OrtErn7Z1oFyIYURJFaz184q2HQRjGFsGo0nl7J9qFCEaURNFaD38wLwMbIhhVOm/vRLsQwYiSKFrr4YupGdUKwajSeXsn2oUIRpRE0VoPU8zOkCYIRpXO2zvRLkQwoiSK1nqYkXyChrx8wajSec/xWlPh4LAX8kw9ROMrWuthSdo5GvXC7WNU6bznWGad2chqcppFqN0DKlzIE8ZG22/GuPEnxqO1HlZJOE0DX/Lu54snRvec9wi7MWg28g03y7Q0HdwKQL0Ho3N3JlFfitZ62CLVTI19sb5Kq3TeXVYf4Rx5zLMagLZ+Xn3hvRdS0Vii8RWt9VAgyWQNf5mCUaXzHuGnpPJ9yZGv0q6fLuSEEo2vaK2HMsPP1/AX+BGMqp33CMuvyXZDz8cTI6KhFa31sMvAUzbwpS0usyTB6J7zHmE1qezGl9ffvyiaZibBiGgMRWs9HGHIWRvyoravtCTB6J7zHmErGG09K5odMH0TwYhoDEVrPRxksIkb7HIOXGxJgtE95z3CkaSyGoy+P2x9rbb7fdy9F1LLWKLxFa31cJz36zXA9I1xFb9ecrkrV35tH6MT593lYFjZCkYJnxhF22/GuPEnxqO1Hn6l6xnsuvgrV20foxrnvUghNl1/GlTzQm6th2h8RWs9nKDHhy491nzjtZe7UjC657y9E+1CBCNKomith9N0NJUdlfrY5ZckGN1z3t6JdiGCESVRtNbDFeI/holfYR0Tyl0pGN1z3t6JdiGCESVRtNbDdcLOadjCWvhQkmB0z3l7J9qFCEaURNFaD7cQ7cFMtHqau1HuSsHonvP2TrQLEYwoiaK1Hm7kTxxpOMXNC4iJYFTpvL0T7UIEI0qiaK2HJ6ifTuShsjnlrlz5tX2MTpy3d6JdiH2MjCcZj9Z6eI4Kz288Ijrokn2Mapy3d6JdiCdGlETRWg8V+MaXW2b/3nfLgK/SKp23d6JdiGBESRSt9VCZaaw5eDOceAlmBpa7UjC657y9E+1CBCNKomith7bMQs8qzYvsHcGo0nl7J9qFCEaURNFaDxgewajSeXsn2oUIRpRE0VoPGB7BqNJ5eyfahQhGlETRWg8YHsHo8fMOQ/NJXEwo0fiK1nrA8JwJRvYxQnPe9jEynmPckgVUZvfzxRMjRMQTI0oiSxZQGV+loUsEI0oiSxZQGcEIXSIYURJZsoDKCEboEsGIksiSBVRGMEKXCEaURJYsoDKCEbpEMKIksmQBlRGM0CWCESWRJQuojH2M0CX2MTKeZNySBVTGPkboEk+MKIksWUBlfJWGLhGMKIksWUBlBCN0iWBESWTJAiojGKFLBCNKIksWUBnBCF0iGFESWbKAyghG6BLBiJLIkgVUJlEw+tK8GFxHMKIksmQBlcmyjxEGwz5GxpOMW0uBymTZxwiD4YkRJZG1FKhMlq/SMBiCESWRtRSojGCELhGMKImspUBlBCN0iWBESWQtBSojGKFLBCNKImspUBnBCF0iGFESWUuByghG6BLBiJLIWgpUJvo+RtONGWGDyumNEW2/GePGnxjX8kBlou9jZFFgyLYPRONLywOVif5VmkWBIds+EI0vLQ9URjDqDIZMfCAaX1oeqIxg1BkMmfhANL60PFAZwagzGDLxgWh8aXmgMoJRZzBk4gPR+NLyQGUEo85gyMQHovGl5YHKnAlGlfcxau5RKBjy9SHafjPGjT8xruWBytjHqDMYMvGBaHxpeaAyvkrrDIZMfCAaX1oeqIxg1BkMmfhANL60PFAZwagzGDLxgWh8aXmgMoJRZzBk4gPR+NLyQGUEo85gyMQHovGl5YHKCEadwZCJD0TjS8sDlbGPUWcw5OtDtP1mjBt/YlzLA5Wxj1FnMGTiA9H40vJAZXyV1hkMmfhANL60PFAZwagzGDLxgWh8aXmgMoJRZzBk4gPR+NLyQGUEo85gyMQHovGl5YHKCEadwZCJD0TjS8sDlRGMOoMhEx+IxpeWBypjH6POYMjXh2j7zRg3/sS4lgcqYx+jzmDIxAei8aXlgcr4Kq0zGDLxgWh8aXmgMoJRZzBk4gPR+NLyQGUEo85gyMQHovGl5YHKCEadwZCJD0TjS8sDlRGMOoMhEx+IxpeWByojGHUGQyY+EI0vLQ9Uxj5GncGQrw/R9psxbvyJcS0PVMY+Rp3BkIkPRONLywOV8VVaZzBk4gPR+NLyQGUEo85gyMQHovGl5YHKCEadwZCJD0TjS8sDlRGMOoMhEx+IxpeWByojGF3i9Xp9/1lxwtpfeHMEI0oiLQ9URjDaoRB6pr+qlo2aGxIEwYiSSMsDlbGP0XkEo4bYx8h4knEtD1Qm6T5Gr7/6/rz6q8/ky7LV8dl71pmwCmeJjydGlERaHqhM0q/SlvlmK+gs/4po6++KBKOaCEaURFoeqIxgtPLD7HnSRzCKh2BESaTlgcoIRvOvzGbHCEYxEYwoibQ8UBnBSDDqEsGIkkjLA5URjE5+lbY1WGXCGtwo0RCMKIm0PFCZpMHoFgSjhghGlERaHqjMmWBkH6MvW1+rPTxh7S+8OW/7GBnPMa7lgcrsfr54YhQLhkx8IBpfWh6ojK/SOoMhEx+IxpeWByojGHUGQyY+EI0vLQ9URjDa+Quhg/+h/vdXs/+orfA+W+d6LVTZkC4QjCiJtDxQGcHof59iain/h/qz7PLr+xTKaGtIfAQjSiItD1QmaTBaPpVZfUgze0Q0y0PTd5v9sDx4Kz8tj29iSHcIRpREWh6oTNJgNKOcVJbfcE2PmQ4WvgIrH7CaolaPtEpOfCAaX1oeqMyZYDTePkZbwagcX8ovL5xi9iCq8D7LEavk14do+80YN/7EuJYHKrP7+ZL3idFn+0HO7JjVp0HL8DR9t+VJl++8WphVcuID0fjS8kBlzjwxqtnMzy0KW19aLePLbOSzePxTfoC0fNtlMDr+DMkqOfGBaHxpeaAyeYPRlNUnRqsPhz7FQFN+sDR75yMxSDDaQjCiJNLyQGUEo/99in8ktPU0aBqJChlo64WrrxWMjiMYURJpeaAygtH/PseeGM2+Ait/d7Z1itVv2QovFIy2EIwoibQ8UJmkwei1p+XBhZFv6Fl9n623nb529nPhJVbJiQ9E40vLA5VJGoz6hSETH4hSSNcD1Tjy4bJyxHj7GHUEQ74+RNtvxrjxh8Z1PVCNP8HIPkY9wZCJD0QppOuBapx8YlSzk60IDNn2gSiFdD1QDcGoPxgy8YEohXQ9UA3BqD8YMvGBKIs0PlCBg58sglEsGDLxgSiLND5QAcGoSxgy8YEoizQ+UAHBqEsYMvGBKJH0PvAoxz9W7GMUC4Z8fQi434xx48+N633gUabByD5GPcGQiQ9EuaT9gYf46TNFMIoFQyY+EOWS9gceQjDqGIZMfCBKJysAcDu/fqAIRrFgyMQHonSyAgC3Ixj1DUMmPhBllEUAuJETnyaCUSwYMvGBKKMsAsCNCEbdw5CJD0RJZR0AbuHcR4l9jGLBkK8PzfeVMW684bilALjI6c8RT4xiwZCJD0SpZTUATnPlQ0QwigVDJj4QZZcFATjBxU+Q9sEIM5rfUhEQjIg+ghFwir6DEbCKYET0RxZb4Ceuf3wIRoiIYET0lWfJwBH+dspVCUaIiGBENJNVFyhw46eGYISICEZES1l4gVXu/chovI8RsMrp/SeMGx973NoLzLj988ITI0TEEyOiLfmTI+APd/1R0UyCESIiGBGVJR4hMw9Foj8SjBARwYjoiMQjZOPRSPRHghEiIhgRHZd4hAxUiER/JBghIoIR0a+yez6GZHJjV5JghIgIRkSn5f9lCF2zuIFr63wwAh7l3hudKK2a9zLwE6075uw+RsaNGzdu3Lhx4+ONt49mREREREEkGBERERH9J8GIiIiI6D8JRkRERET/STAiIiIi+k+CEREREdF/+n+oiZKPq++OpwAAAABJRU5ErkJggg==" alt="" />
总结:三个窗口再卖100张票,直到卖完,3个线程才停止。卖的票的号码没有重复,真正实现了现实生活中的卖票的效果。但是存在一个线程安全问题,通过测试运行发现,打印出了0,-1,-2等错票,多线程运行出现了安全问题,这就需要引入线程锁机制,下一篇博客详细的讲解怎样避免这一问题。
java基础知识回顾之java Thread类学习(三)--java线程实现常见的两种方式实现好处:的更多相关文章
- java基础知识回顾之java Thread类--java线程实现常见的两种方式实现Runnable接口(二)
创建线程的第二中方式: /** * 步骤: 1定义类实现Runnable接口 2.实现Runnable接口中的run方法. 3.通过Thread类建立线程对象,并将Run ...
- java基础知识回顾之---java String final类普通方法
辞职了,最近一段时间在找工作,把在大二的时候学习java基础知识回顾下,拿出来跟大家分享,如果有问题,欢迎大家的指正. /* * 按照面向对象的思想对字符串进行功能分类. * ...
- Java基础知识回顾之七 ----- 总结篇
前言 在之前Java基础知识回顾中,我们回顾了基础数据类型.修饰符和String.三大特性.集合.多线程和IO.本篇文章则对之前学过的知识进行总结.除了简单的复习之外,还会增加一些相应的理解. 基础数 ...
- Java基础知识回顾之五 ----- 多线程
前言 在上一篇文章中,回顾了Java的集合.而在本篇文章中主要介绍多线程的相关知识.主要介绍的知识点为线程的介绍.多线程的使用.以及在多线程中使用的一些方法. 线程和进程 线程 表示进程中负责程序执行 ...
- Java基础-进程与线程之Thread类详解
Java基础-进程与线程之Thread类详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.进程与线程的区别 简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程 ...
- JAVA基础知识回顾(面试资料)
关于数据库知识和面试:https://www.cnblogs.com/yanqb/p/9894943.html 关于数据库知识和面试:https://www.cnblogs.com/yanqb/p/1 ...
- Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
Java并发编程:线程间协作的两种方式:wait.notify.notifyAll和Condition 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作.比如说最经典的生产者-消费者 ...
- 19、Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
Java并发编程:线程间协作的两种方式:wait.notify.notifyAll和Condition 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作.比如说最经典的生产者-消费者 ...
- Java并发--线程间协作的两种方式:wait、notify、notifyAll和Condition
在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作.比如说最经典的生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界 ...
随机推荐
- C语言 数组输出,冒泡排序法,沉底排序法,二维数组输出,输出字母列长度,从随机数组中找重复数
#include <stdio.h> #define sum 3+4//宏定义是原封不动的使用used for test4 #include <time.h>//used fo ...
- virtualbox安装centos6.5碰到的问题
今天无聊用virtualbox安装centos6.5 , 自己笔记本vm撑不住, 用公司的试试virtualbox先 安装快完成时 没有足够的内存配置kdump”(在英文界面下提示的是“insuffi ...
- SharedPreferences的基本用法
获取SharedPreferences的两种方式: 1 调用Context对象的getSharedPreferences()方法 2 调用Activity对象的getPreferences()方法 两 ...
- [DevExpress]ChartControl之时间轴示例
关键代码: using System; using System.Data; using System.Windows.Forms; using DevExpress.XtraCharts; name ...
- Enhanced RCP: How views can communicate – The e4 way | Tomsondev Blog
Some weeks ago I published how views can communicate using the EventAdmin-Service. To get things wor ...
- sql server 中更改默认实例
因为安装了多个版本的sql server,会造成同时存在多个实例的情况. 1.关闭旧版本的sql server实例,并设置为手动启动 2.按下图步骤操作,把tcp端口设置为1433 3.重启sql s ...
- i18next-页面层语言国际化js框架介绍
因为工作需要,最近研究了下网站语言国际化的问题,根据当前项目架构,寻求一种较好的解决方案.首先总结下项目中语言切换实现方式大概有以下几种: 1,一种语言一套页面,如:index_CN.html,ind ...
- [大牛翻译系列]Hadoop(10)MapReduce 性能调优:诊断reduce性能瓶颈
6.2.3 Reduce的性能问题 Reduce的性能问题有和map类似的方面,也有和map不同的方面.图6.13是reduce任务的具体的执行各阶段,标识了可能影响性能的区域. 这一章将介绍影响re ...
- laravel--为什么属性在模型中没有定义,却取出来了值,这些属性哪里来的
看laravel模型中的这段代码, public function getLimitUsersAttribute() { return $this->user_limit - $this-> ...
- 第29章 项目10:DIY街机游戏
1.问题 "Self-Defense Against Fresh Fruit":军士长指挥自己的士兵使用自我防御战术对抗以石榴.芒果.青梅和香蕉等新鲜水果入侵者.防御战术包括使用枪 ...