linux java多线程_Java多线程从简单到复杂
1 輸出數(shù)字
(1) 多線程操作全局變量任務(wù)
package c;
/**
* @author ZTX
* (1) 多線程操作全局變量任務(wù)
* 2013-12-14 21:49:17
*
*
*/
public class MyThread implements Runnable
{
private static int i=0;
public MyThread(){
}
@Override
public void run(){
i++;
System.out.println("i="+i);
}
}
(2) 為這個(gè)任務(wù)開三個(gè)線程
private static void testImport3() {
MyThread imp=new MyThread();
Thread t;
for(int i=0;i<3;i++){//開3個(gè)線程
t=new Thread(imp);
t.start();
}
}
(3) 輸出結(jié)果
i=2
i=3
i=2
2 同步
避免一個(gè)數(shù)字拿出來處理前被另一個(gè)線程拿出來,兩個(gè)線程處理之后返回了同一種結(jié)果(本應(yīng)該是兩種)
(1) 加鎖
package c;
import Java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
/**
* @author ZTX
* (1) 多線程操作全局變量
* 2013-12-14 21:49:17
* (2) 同步
* 2013-12-14 22:12:19
*
*/
public class MyThread implements Runnable
{
private static int i=0;
public MyThread(){
}
private static Lock lock=new ReentrantLock();
@Override
public void run(){
lock.lock();
try {
i++;
System.out.println("i="+i);
} catch (Exception e) {
e.printStackTrace();
}finally{
lock.unlock();
}
}
}
(2)增加線程數(shù)驗(yàn)證同步
private static void testImport3() {
MyThread imp=new MyThread();
Thread t;
for(int i=0;i<30;i++){//開3個(gè)線程
t=new Thread(imp);
t.start();
}
}
(3)輸出結(jié)果
i=1
i=2
i=3
i=4
i=5
i=6
i=7
i=8
i=9
i=10
i=11
i=12
i=13
i=14
i=15
i=16
i=17
i=18
i=19
i=20
i=21
i=22
i=23
i=24
i=25
i=26
i=27
i=28
i=29
i=30
3
4
5
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的linux java多线程_Java多线程从简单到复杂的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 自定义监听_Spring 中的
- 下一篇: java规定数组的下标_Java数组元素