এটি কি সিঙ্ক্রোনাইজড, অপেক্ষা এবং অবহিত অবহেলা করার সময়?


13

একটি একক দৃশ্য আছে (প্রাচীন জেভিএমগুলির সাথে সামঞ্জস্যতা ছাড়া অন্য) যেখানে ব্যবহারটি ব্যবহার করার synchronizedপক্ষে পছন্দনীয় Lock? যে কেউ নতুন সিস্টেম ব্যবহার waitবা notifyতার মাধ্যমে ন্যায্যতা প্রমাণ করতে পারে ?

এমন কোনও অ্যালগরিদম রয়েছে যা এর বাস্তবায়নে অবশ্যই তাদের একটি ব্যবহার করতে হবে ?

আমি পূর্ববর্তী প্রশ্নগুলি দেখেছি যা এই বিষয়ে স্পর্শ করেছে তবে আমি এটিকে আরও কিছুটা এগিয়ে নিতে চাই এবং আসলে deprecateসেগুলিই। তাদের সাথে অনেকগুলি ট্র্যাপ এবং সমস্যা এবং সতর্কতা রয়েছে যা নতুন সুবিধাগুলি সহ লোকে। আমি কেবল অনুভব করি শীঘ্রই এগুলি অপ্রচলিত হিসাবে চিহ্নিত করার সময় আসতে পারে।


4
অনুশীলনে আপনি কি ব্রায়ান গোয়েটসের জাভা কনকুরিঞ্জি পড়েছেন? তিনি সেখানে স্পষ্টভাবে লক বিতর্ককে পুরোপুরিভাবে কাভার করেছেন।
মার্টিজ ভার্বার্গ

@ মার্তিজনভের্গবার্গ - দুঃখের বিষয় নয় তবে তাঁর কাজের প্রতি আমার প্রচুর শ্রদ্ধা রয়েছে।
ওল্ডরুকমুডিজিয়ন

1
সিঙ্ক্রোনাইজড কীওয়ার্ডটি সহজ স্ট্যাটিক পদ্ধতিগুলির সাথে ব্যবহারযোগ্য হতে পারে যা থ্রেড নিরাপদ হওয়া উচিত, অন্য যে কোনও কিছুর জন্য আমি একযোগে ব্যবহার করব। তবে এটি আমার মতামত
কেমোদা

উত্তর:


12

এমন কোনও অ্যালগরিদম রয়েছে যা এর বাস্তবায়নে অবশ্যই তাদের একটি ব্যবহার করতে হবে?

প্রায় অবশ্যই না। (বস্তুত, তাত্ত্বিক দৃষ্টিকোণ থেকে, আপনি অনুকরণ অপেক্ষা করতে সক্ষম / অন্যান্য java.util.concurrent ব্যবহার অনুপ্রেরিত আমাকে অবহিত হওয়া উচিত। সিঙ্ক্রোনাইজ স্পষ্ট লক অপারেশন দিয়ে প্রতিস্থাপিত করা যেতে পারে ক্লাস। এবং ... যদিও আপনি আনলক করতে সতর্কতা অবলম্বন করা আবশ্যক হবে finallyক্লজ।)

তবে, সম্ভবত অ্যালগরিদম রয়েছে যেখানে জাভাতে সর্বোত্তম পারফরম্যান্স বাস্তবায়নের সাথে অপেক্ষা বা বিজ্ঞাপিত ছাড়াই সিঙ্ক্রোনাইজের সরাসরি ব্যবহার জড়িত।


এটি কি সিঙ্ক্রোনাইজড, অপেক্ষা এবং অবহিত অবহেলা করার সময়?

পূর্ববর্তী প্রশ্নের উত্তর নির্বিশেষে, উত্তর অবশ্যই না হয়।

অপেক্ষা / বিজ্ঞপ্তিটি সঠিকভাবে ব্যবহার করা যেতে পারে (এবং প্রায়শই ব্যবহৃত হয়)। জাভাতে, অবনতি ক্লাস এবং পদ্ধতিগুলির জন্য সংরক্ষিত যা ভাঙা; অর্থাৎ যেখানে অবিচ্ছিন্ন ব্যবহার জরুরি কাজ হিসাবে সংশোধন করা উচিত। যদি সান (এবং এখন ওরাকল) কোনও কিছুকে মৌলিক হিসাবে প্রত্যাখ্যান করে এবং ওয়েট / নোটিফিকেশন হিসাবে বহুল ব্যবহৃত হয় তবে তারা প্রচুর পরিমাণে লিগ্যাসি কোডের জন্য একটি গুরুতর সামঞ্জস্যতা সমস্যা তৈরি করবে। এটি কারও স্বার্থে নয়।

আপনি যদি আপনার কোডটিতে সিঙ্ক্রোনাইজড / ওয়েট / অবহিত করতে চান তবে তা ঠিক। তবে অবচয় হ'ল বৃহত পরিমাণে মূলত সঠিক মাল্টি-থ্রেডেড কোডের পুনর্লিখনের জন্য আহ্বান জানায় এবং এটি একটি বিএডি আইডিইএ হবে। কর্পোরেট আইটি পরিচালক এবং সফ্টওয়্যার পণ্য পরিচালকরা এটির পরামর্শ দেওয়ার জন্য আপনাকে ঘৃণা করবে ...


জাভা ডকুমেন্টেশন অনুসারে "অবচয়" এর অর্থ কী তা পড়ার মতো : http://docs.oracle.com/javase/1.5.0/docs/guide/javadoc/deprecation/deprecation.html

এবং এও নোট করুন যে আমরা জাভা ভাষার মূল বিষয়বস্তু হ্রাস করার কথা বলছি। হতাশার synchronizedবিশাল পরিণতি হয়।


প্রকৃতপক্ষে, আমি যতদূর মনে করি, দুর্দান্ত "অনুশীলনে জাভা চুক্তি" বই অনুসারে, ব্যবহারের java.util.concurrentক্লাসগুলি আসলে দ্রুততর। পর্দার আড়ালে এই ক্লাসগুলি সরাসরি ভিএম এর সাথে কথা বলে, যেখানে সিঙ্ক্রোনাইজ করা হিসাবে অবজেক্ট গ্রাফের অবজেক্টে একটি ভোঁতা লক ইনস্টল করা হয় এবং বিশ্বব্যাপী কর্মক্ষমতা প্রভাবিত করে।
akuhn

আমি যদি স্টেফেনকে প্রস্তাব দিই যে আমরা আসলে synchronizedএট সরিয়ে দিই তবে আমাকে @ ক্ষমা করুন । অল। আমি নিছক অবমূল্যায়নের পরামর্শ দিচ্ছি, যা সত্যই কেবল বলেছে এটি নতুন কোডের জন্য ব্যবহার করবেন না। আমি তাদের অপসারণের দাবিতে ক্ষতিকারক চেষ্টা করা এবং পরীক্ষিত উত্তরাধিকার কোডটি প্রস্তাব দেওয়ার স্বপ্ন দেখব না।
ওল্ড কার্মিউডজিয়ন

@ ওल्डকুরিমডজিয়ন - বরং দেরি হওয়া প্রতিক্রিয়া, তবে আমি মনে করি অবমূল্যায়ন খুব চরম। 1) এর অর্থ বৈশিষ্ট্যটি সরানো যেতে পারে। 2) এটি বোঝায় যে বৈশিষ্ট্যটি কেবলমাত্র পুরানো mereঙের থেকে আলাদা। 3) প্রচুর লোক এখনও সেভাবে নতুন কোড লিখতে খুশি ... এবং তাদের এমনটি করার কোনও শক্ত কারণ নেই। ৪) এটিকে নিরুৎসাহিত করার অন্যান্য "আপনার মুখে" কম উপায় রয়েছে; যেমন পিএমডি বিধি রচনা ...
স্টিফেন সি

@ স্টেফেনসি - এরপরে কি আমরা কিছুটা কম নাটকীয় পদক্ষেপ নিতে পারি যা পরিণামে তাদের কলেজগুলিতে ব্যবহার করা বা শেখানো না হতে পারে। তারা পরিষ্কারভাবে এড়ানো উচিত। আমি পিএমডি বিধি সম্পর্কে সন্দেহ করি - যদিও এটি একটি ভাল ধারণা - খুব তাড়াতাড়ি শিক্ষকদের কাছে পৌঁছায় না।
ওল্ডরুকমুডিজিয়ন

1
@ স্টেফেনসি একটি নিটপিক: আপনি যে জাভা ডক্সের সাথে লিঙ্ক করেছেন তা অনুসরণ করে, আমি মনে করি না হ্রাসের অর্থ হ্রাসকারী কোডটি নষ্ট হয়ে গেছে। এটির একটি কারণ, তবে ডকস হিসাবে, একটি নতুন, আরও ভাল এপিআই (যেমন, ওপি যুক্তিযুক্ত, যেমন সম্মতিযুক্ত ক্ষেত্রে যুক্তি দিয়ে) সুপারিশ করা হয় তখন একটি এপিআই হ্রাস করা যেতে পারে। এবং নিম্ন-স্তরের সম্মতি, যদি খারাপ অভ্যাসগুলিকে উত্সাহিত না করে তবে অবশ্যই খুব ত্রুটিযুক্ত।
আন্দ্রেস এফ।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.