构树种植密度每亩用种多少斤?

小说:构树种植密度每亩用种多少斤?作者:陵帝徒更新时间:2019-04-24字数:16580

前序
这是一个系列文章,前边几篇比较基础,主要为了后续做准备。熟悉的朋友可以直接跳过看后续的文章。
本主题很重要,学完这个系列,你将会对Java并包有一个透彻的原理性的认识。线程池技术、阻塞队列、信号量、原子性操作等等所用的基础技术都会在这系列的文章中讲到。学完之后,大家可以自己实现一个CountDownLatch来练练手。
 
正文
都知道,现在处理器的核数越来越多,为充分利用其计算资源,服务端编程通常会用上多线程技术。利用多线程技术可以同时进行计算任务,从而提高的服务的并发度。
 
但是,当多线程对同一块内存资源进行操作时,如果不对线程进行“排队”,其结果将是混乱不堪预测额。
 
这里说的“排队”就是通常说的线程同步。当一个线程在操作这个资源时,后来的线程等待上一个线程操作完才能开始。
 
举个代码栗子:
public class TestMyLock {
    private static  List<Integer> list = new ArrayList<>();
    public static void main(String[] args){
        Thread t1 = new Thread(new Runnable() {
            @Override
            public void run() {
                for(int i=0;i<10000;i++){
                    add(i);
                }
            }
        });
        Thread t2 = new Thread(new Runnable() {
            @Override
            public void run() {
                print();
            }
        });
        t1.start();
        t2.start();
    }
    private static void add(int i){
        list.add(i);
    }
    private static void print(){
        Iterator<Integer> iterator = list.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
    }
}

以上我们创建了两个线程:t1和t2。t1循环一万次向list里边添加数字,t2遍历list并将内容打印到控制台。

执行后得到如下错误:
 

 

原因很简单,就是两个线程同时操作list而没有进行线程同步导致的报错。我们修改下代码再来看一下。
add和print方法修改为如下:
private synchronized static void add(int i){
        list.add(i);
}
private synchronized static void print(){
        Iterator<Integer> iterator = list.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
}

我们仅仅是在add和print方法前加入了synchronized修饰词,程序便可以正常执行了。

 
synchronized关键字是Java内置的同步锁。两个线程会竞争对synchronized绑定的同步对象加锁,加锁失败的线程会阻塞等待加锁成功的线程执行完毕。由于add和print方法都是静态方法,这里synchronized绑定的同步对象就是TestMyLock.class。
 
----------------------------------------------------------------------------
 

我正在「JAVA互联网技术」和朋友们讨论有趣的话题,你一起来吧?

https://t.zsxq.com/EUn6IIE

 
 

当前文章:http://cnsdbtzg.com/news/201901/18/content_61787.html

发布时间:2019-04-24 08:31:46

木槿价钱哪里最便宜,就来华东大型产地 八角金盘容器苗多少钱一棵? 云南紫玉兰价格便宜吗? 地径4公分黑松哪里有卖的? 小叶女贞多少钱一株? 15cm高紫藤树苗多少钱一棵? 30公分栗子树多少钱2500元一棵上车价格 云南扶芳藤都在哪里买的? 板蓝根种子如何播种才能提高出苗的数量? 结缕草和狗牙根一样吗?

66630 40454 11177 72247 23517 33151 50398 51276 89107 66019 56738 75439 47892 23900 83509 51915 55156 91789 44799 66429 13156 82432 91602

我要说两句: (0人参与)

发布